%!
%%BoundingBox: (atend)
%%Pages: (atend)
%%DocumentFonts: (atend)
%%EndComments
%
% FrameMaker PostScript Prolog 3.0, for use with FrameMaker 3.0
% Copyright (c) 1986,87,89,90,91 by Frame Technology Corporation.
% All rights reserved.
%
% Known Problems:
%	Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
/FMversion (3.0) def 
% Set up Color vs. Black-and-White
	/FMPrintInColor systemdict /colorimage known
		systemdict /currentcolortransfer known or def
% Uncomment this line to force b&w on color printer
%   /FMPrintInColor false def
/FrameDict 195 dict def 
systemdict /errordict known not {/errordict 10 dict def
		errordict /rangecheck {stop} put} if
% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
FrameDict /tmprangecheck errordict /rangecheck get put 
errordict /rangecheck {FrameDict /bug true put} put 
FrameDict /bug false put 
mark 
% Some PS machines read past the CR, so keep the following 3 lines together!
currentfile 5 string readline
00
0000000000
cleartomark 
errordict /rangecheck FrameDict /tmprangecheck get put 
FrameDict /bug get { 
	/readline {
		/gstring exch def
		/gfile exch def
		/gindex 0 def
		{
			gfile read pop 
			dup 10 eq {exit} if 
			dup 13 eq {exit} if 
			gstring exch gindex exch put 
			/gindex gindex 1 add def 
		} loop
		pop 
		gstring 0 gindex getinterval true 
		} def
	} if
/FMVERSION {
	FMversion ne {
		/Times-Roman findfont 18 scalefont setfont
		100 100 moveto
		(FrameMaker version does not match postscript_prolog!)
		dup =
		show showpage
		} if
	} def 
/FMLOCAL {
	FrameDict begin
	0 def 
	end 
	} def 
	/gstring FMLOCAL
	/gfile FMLOCAL
	/gindex FMLOCAL
	/orgxfer FMLOCAL
	/orgproc FMLOCAL
	/organgle FMLOCAL
	/orgfreq FMLOCAL
	/yscale FMLOCAL
	/xscale FMLOCAL
	/manualfeed FMLOCAL
	/paperheight FMLOCAL
	/paperwidth FMLOCAL
/FMDOCUMENT { 
	array /FMfonts exch def 
	/#copies exch def
	FrameDict begin
	0 ne dup {setmanualfeed} if
	/manualfeed exch def
	/paperheight exch def
	/paperwidth exch def
	/yscale exch def
	/xscale exch def
	currenttransfer cvlit /orgxfer exch def
	currentscreen cvlit /orgproc exch def
	/organgle exch def /orgfreq exch def
	setpapername 
	manualfeed {true} {papersize} ifelse 
	{manualpapersize} {false} ifelse 
	{desperatepapersize} if
	end 
	} def 
	/pagesave FMLOCAL
	/orgmatrix FMLOCAL
	/landscape FMLOCAL
/FMBEGINPAGE { 
	FrameDict begin 
	/pagesave save def
	3.86 setmiterlimit
	/landscape exch 0 ne def
	landscape { 
		90 rotate 0 exch neg translate pop 
		}
		{pop pop}
		ifelse
	xscale yscale scale
	/orgmatrix matrix def
	gsave 
	} def 
/FMENDPAGE {
	grestore 
	pagesave restore
	end 
	showpage
	} def 
/FMFONTDEFINE { 
	FrameDict begin
	findfont 
	ReEncode 
	1 index exch 
	definefont 
	FMfonts 3 1 roll 
	put
	end 
	} def 
/FMFILLS {
	FrameDict begin
	array /fillvals exch def
	end 
	} def 
/FMFILL {
	FrameDict begin
	 fillvals 3 1 roll put
	end 
	} def 
/FMNORMALIZEGRAPHICS { 
	newpath
	0.0 0.0 moveto
	1 setlinewidth
	0 setlinecap
	0 0 0 sethsbcolor
	0 setgray 
	} bind def
	/fx FMLOCAL
	/fy FMLOCAL
	/fh FMLOCAL
	/fw FMLOCAL
	/llx FMLOCAL
	/lly FMLOCAL
	/urx FMLOCAL
	/ury FMLOCAL
/FMBEGINEPSF { 
	end 
	/FMEPSF save def 
	/showpage {} def 
	FMNORMALIZEGRAPHICS 
	[/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall 
	fx fy translate 
	rotate
	fw urx llx sub div fh ury lly sub div scale 
	llx neg lly neg translate 
	} bind def
/FMENDEPSF {
	FMEPSF restore
	FrameDict begin 
	} bind def
FrameDict begin 
/setmanualfeed {
%%BeginFeature *ManualFeed True
	 statusdict /manualfeed true put
%%EndFeature
	} def
/max {2 copy lt {exch} if pop} bind def
/min {2 copy gt {exch} if pop} bind def
/inch {72 mul} def
/pagedimen { 
	paperheight sub abs 16 lt exch 
	paperwidth sub abs 16 lt and
	{/papername exch def} {pop} ifelse
	} def
	/papersizedict FMLOCAL
/setpapername { 
	/papersizedict 14 dict def 
	papersizedict begin
	/papername /unknown def 
		/Letter 8.5 inch 11.0 inch pagedimen
		/LetterSmall 7.68 inch 10.16 inch pagedimen
		/Tabloid 11.0 inch 17.0 inch pagedimen
		/Ledger 17.0 inch 11.0 inch pagedimen
		/Legal 8.5 inch 14.0 inch pagedimen
		/Statement 5.5 inch 8.5 inch pagedimen
		/Executive 7.5 inch 10.0 inch pagedimen
		/A3 11.69 inch 16.5 inch pagedimen
		/A4 8.26 inch 11.69 inch pagedimen
		/A4Small 7.47 inch 10.85 inch pagedimen
		/B4 10.125 inch 14.33 inch pagedimen
		/B5 7.16 inch 10.125 inch pagedimen
	end
	} def
/papersize {
	papersizedict begin
		/Letter {lettertray letter} def
		/LetterSmall {lettertray lettersmall} def
		/Tabloid {11x17tray 11x17} def
		/Ledger {ledgertray ledger} def
		/Legal {legaltray legal} def
		/Statement {statementtray statement} def
		/Executive {executivetray executive} def
		/A3 {a3tray a3} def
		/A4 {a4tray a4} def
		/A4Small {a4tray a4small} def
		/B4 {b4tray b4} def
		/B5 {b5tray b5} def
		/unknown {unknown} def
	papersizedict dup papername known {papername} {/unknown} ifelse get
	end
	/FMdicttop countdictstack 1 add def 
	statusdict begin stopped end 
	countdictstack -1 FMdicttop {pop end} for 
	} def
/manualpapersize {
	papersizedict begin
		/Letter {letter} def
		/LetterSmall {lettersmall} def
		/Tabloid {11x17} def
		/Ledger {ledger} def
		/Legal {legal} def
		/Statement {statement} def
		/Executive {executive} def
		/A3 {a3} def
		/A4 {a4} def
		/A4Small {a4small} def
		/B4 {b4} def
		/B5 {b5} def
		/unknown {unknown} def
	papersizedict dup papername known {papername} {/unknown} ifelse get
	end
	stopped 
	} def
/desperatepapersize {
	statusdict /setpageparams known
		{
		paperwidth paperheight 0 1 
		statusdict begin
		{setpageparams} stopped pop 
		end
		} if
	} def
/savematrix {
	orgmatrix currentmatrix pop
	} bind def
/restorematrix {
	orgmatrix setmatrix
	} bind def
/dmatrix matrix def
/dpi    72 0 dmatrix defaultmatrix dtransform
    dup mul exch   dup mul add   sqrt def
/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def
/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def
/DiacriticEncoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
/numbersign /dollar /percent /ampersand /quotesingle /parenleft
/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
/two /three /four /five /six /seven /eight /nine /colon /semicolon
/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
/udieresis /dagger /.notdef /cent /sterling /section /bullet
/paragraph /germandbls /registered /copyright /trademark /acute
/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
/periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
] def
/ReEncode { 
	dup 
	length 
	dict begin 
	{
	1 index /FID ne 
		{def} 
		{pop pop} ifelse 
	} forall 
	0 eq {/Encoding DiacriticEncoding def} if 
	currentdict 
	end 
	} bind def
/graymode true def
	/bwidth FMLOCAL
	/bpside FMLOCAL
	/bstring FMLOCAL
	/onbits FMLOCAL
	/offbits FMLOCAL
	/xindex FMLOCAL
	/yindex FMLOCAL
	/x FMLOCAL
	/y FMLOCAL
/setpattern {
	 /bwidth  exch def
	 /bpside  exch def
	 /bstring exch def
	 /onbits 0 def  /offbits 0 def
	 freq sangle landscape {90 add} if 
		{/y exch def
		 /x exch def
		 /xindex x 1 add 2 div bpside mul cvi def
		 /yindex y 1 add 2 div bpside mul cvi def
		 bstring yindex bwidth mul xindex 8 idiv add get
		 1 7 xindex 8 mod sub bitshift and 0 ne
		 {/onbits  onbits  1 add def 1}
		 {/offbits offbits 1 add def 0}
		 ifelse
		}
		setscreen
	 {} settransfer
	 offbits offbits onbits add div FMsetgray
	/graymode false def
	} bind def
/grayness {
	FMsetgray
	graymode not {
		/graymode true def
		orgxfer cvx settransfer
		orgfreq organgle orgproc cvx setscreen
		} if
	} bind def
	/HUE FMLOCAL
	/SAT FMLOCAL
	/BRIGHT FMLOCAL
	/Colors FMLOCAL
FMPrintInColor 
	
	{
	/HUE 0 def
	/SAT 0 def
	/BRIGHT 0 def
	% array of arrays Hue and Sat values for the separations [HUE BRIGHT]
	/Colors   
	[[0    0  ]    % black
	 [0    0  ]    % white
	 [0.00 1.0]    % red
	 [0.37 1.0]    % green
	 [0.60 1.0]    % blue
	 [0.50 1.0]    % cyan
	 [0.83 1.0]    % magenta
	 [0.16 1.0]    % comment / yellow
	 ] def
      
	/BEGINBITMAPCOLOR { 
		BITMAPCOLOR} def
	/BEGINBITMAPCOLORc { 
		BITMAPCOLORc} def
	/BEGINBITMAPTRUECOLOR { 
		BITMAPTRUECOLOR } def
	/BEGINBITMAPTRUECOLORc { 
		BITMAPTRUECOLORc } def
	/K { 
		Colors exch get dup
		0 get /HUE exch store 
		1 get /BRIGHT exch store
		  HUE 0 eq BRIGHT 0 eq and
			{1.0 SAT sub setgray}
			{HUE SAT BRIGHT sethsbcolor} 
		  ifelse
		} def
	/FMsetgray { 
		/SAT exch 1.0 exch sub store 
		  HUE 0 eq BRIGHT 0 eq and
			{1.0 SAT sub setgray}
			{HUE SAT BRIGHT sethsbcolor} 
		  ifelse
		} bind def
	}
	
	{
	/BEGINBITMAPCOLOR { 
		BITMAPGRAY} def
	/BEGINBITMAPCOLORc { 
		BITMAPGRAYc} def
	/BEGINBITMAPTRUECOLOR { 
		BITMAPTRUEGRAY } def
	/BEGINBITMAPTRUECOLORc { 
		BITMAPTRUEGRAYc } def
	/FMsetgray {setgray} bind def
	/K { 
		pop
		} def
	}
ifelse
/normalize {
	transform round exch round exch itransform
	} bind def
/dnormalize {
	dtransform round exch round exch idtransform
	} bind def
/lnormalize { 
	0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
	} bind def
/H { 
	lnormalize setlinewidth
	} bind def
/Z {
	setlinecap
	} bind def
	/fillvals FMLOCAL
/X { 
	fillvals exch get
	dup type /stringtype eq
	{8 1 setpattern} 
	{grayness}
	ifelse
	} bind def
/V { 
	gsave eofill grestore
	} bind def
/N { 
	stroke
	} bind def
/M {newpath moveto} bind def
/E {lineto} bind def
/D {curveto} bind def
/O {closepath} bind def
	/n FMLOCAL
/L { 
 	/n exch def
	newpath
	normalize
	moveto 
	2 1 n {pop normalize lineto} for
	} bind def
/Y { 
	L 
	closepath
	} bind def
	/x1 FMLOCAL
	/x2 FMLOCAL
	/y1 FMLOCAL
	/y2 FMLOCAL
	/rad FMLOCAL
/R { 
	/y2 exch def
	/x2 exch def
	/y1 exch def
	/x1 exch def
	x1 y1
	x2 y1
	x2 y2
	x1 y2
	4 Y 
	} bind def
/RR { 
	/rad exch def
	normalize
	/y2 exch def
	/x2 exch def
	normalize
	/y1 exch def
	/x1 exch def
	newpath
	x1 y1 rad add moveto
	x1 y2 x2 y2 rad arcto
	x2 y2 x2 y1 rad arcto
	x2 y1 x1 y1 rad arcto
	x1 y1 x1 y2 rad arcto
	closepath
	16 {pop} repeat
	} bind def
/C { 
	grestore
	gsave
	R 
	clip
	} bind def
	/FMpointsize FMLOCAL
/F { 
	FMfonts exch get
	FMpointsize scalefont
	setfont
	} bind def
/Q { 
	/FMpointsize exch def
	F 
	} bind def
/T { 
	moveto show
	} bind def
/RF { 
	rotate
	0 ne {-1 1 scale} if
	} bind def
/TF { 
	gsave
	moveto 
	RF
	show
	grestore
	} bind def
/P { 
	moveto
	0 32 3 2 roll widthshow
	} bind def
/PF { 
	gsave
	moveto 
	RF
	0 32 3 2 roll widthshow
	grestore
	} bind def
/S { 
	moveto
	0 exch ashow
	} bind def
/SF { 
	gsave
	moveto
	RF
	0 exch ashow
	grestore
	} bind def
/B { 
	moveto
	0 32 4 2 roll 0 exch awidthshow
	} bind def
/BF { 
	gsave
	moveto
	RF
	0 32 4 2 roll 0 exch awidthshow
	grestore
	} bind def
/G { 
	gsave
	newpath
	normalize translate 0.0 0.0 moveto 
	dnormalize scale 
	0.0 0.0 1.0 5 3 roll arc 
	closepath fill
	grestore
	} bind def
/A { 
	gsave
	savematrix
	newpath
	2 index 2 div add exch 3 index 2 div sub exch 
	normalize 2 index 2 div sub exch 3 index 2 div add exch 
	translate 
	scale 
	0.0 0.0 1.0 5 3 roll arc 
	restorematrix
	stroke
	grestore
	} bind def
	/x FMLOCAL
	/y FMLOCAL
	/w FMLOCAL
	/h FMLOCAL
	/xx FMLOCAL
	/yy FMLOCAL
	/ww FMLOCAL
	/hh FMLOCAL
	/FMsaveobject FMLOCAL
	/FMoptop FMLOCAL
	/FMdicttop FMLOCAL
/BEGINPRINTCODE { 
	/FMdicttop countdictstack 1 add def 
	/FMoptop count 4 sub def 
	/FMsaveobject save def
	userdict begin 
	/showpage {} def 
	FMNORMALIZEGRAPHICS 
	3 index neg 3 index neg translate
	} bind def
/ENDPRINTCODE {
	count -1 FMoptop {pop pop} for 
	countdictstack -1 FMdicttop {pop end} for 
	FMsaveobject restore 
	} bind def
/gn { 
	0 
	{	46 mul 
		cf read pop 
		32 sub 
		dup 46 lt {exit} if 
		46 sub add 
		} loop
	add 
	} bind def
	/str FMLOCAL
/cfs { 
	/str sl string def 
	0 1 sl 1 sub {str exch val put} for 
	str def 
	} bind def
/ic [ 
	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
	0
	{0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
	{10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
	{19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
	{13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
	{4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
	{13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
	{7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
	{0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
	{10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
	] def
	/sl FMLOCAL
	/val FMLOCAL
	/ws FMLOCAL
	/im FMLOCAL
	/bs FMLOCAL
	/cs FMLOCAL
	/len FMLOCAL
	/pos FMLOCAL
/ms { 
	/sl exch def 
	/val 255 def 
	/ws cfs 
	/im cfs 
	/val 0 def 
	/bs cfs 
	/cs cfs 
	} bind def
400 ms 
/ip { 
	is 
	0 
	cf cs readline pop 
	{	ic exch get exec 
		add 
		} forall 
	pop 
	
	} bind def
/wh { 
	/len exch def 
	/pos exch def 
	ws 0 len getinterval im pos len getinterval copy pop
	pos len 
	} bind def
/bl { 
	/len exch def 
	/pos exch def 
	bs 0 len getinterval im pos len getinterval copy pop
	pos len 
	} bind def
/s1 1 string def
/fl { 
	/len exch def 
	/pos exch def 
	/val cf s1 readhexstring pop 0 get def
	pos 1 pos len add 1 sub {im exch val put} for
	pos len 
	} bind def
/hx { 
	3 copy getinterval 
	cf exch readhexstring pop pop 
	} bind def
	/h FMLOCAL
	/w FMLOCAL
	/d FMLOCAL
	/lb FMLOCAL
	/bitmapsave FMLOCAL
	/is FMLOCAL
	/cf FMLOCAL
/wbytes { 
	dup 
	8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse
	} bind def
/BEGINBITMAPBWc { 
	1 {} COMMONBITMAPc
	} bind def
/BEGINBITMAPGRAYc { 
	8 {} COMMONBITMAPc
	} bind def
/BEGINBITMAP2BITc { 
	2 {} COMMONBITMAPc
	} bind def
/COMMONBITMAPc { 
	/r exch def
	/d exch def
	gsave
	translate rotate scale /h exch def /w exch def
	/lb w d wbytes def 
	sl lb lt {lb ms} if 
	/bitmapsave save def 
	r                    
	/is im 0 lb getinterval def 
	ws 0 lb getinterval is copy pop 
	/cf currentfile def 
	w h d [w 0 0 h neg 0 h] 
	{ip} image 
	bitmapsave restore 
	grestore
	} bind def
/BEGINBITMAPBW { 
	1 {} COMMONBITMAP
	} bind def
/BEGINBITMAPGRAY { 
	8 {} COMMONBITMAP
	} bind def
/BEGINBITMAP2BIT { 
	2 {} COMMONBITMAP
	} bind def
/COMMONBITMAP { 
	/r exch def
	/d exch def
	gsave
	translate rotate scale /h exch def /w exch def
	/bitmapsave save def 
	r                    
	/is w d wbytes string def
	/cf currentfile def 
	w h d [w 0 0 h neg 0 h] 
	{cf is readhexstring pop} image
	bitmapsave restore 
	grestore
	} bind def
	/proc1 FMLOCAL
	/proc2 FMLOCAL
	/newproc FMLOCAL
/Fmcc {
    /proc2 exch cvlit def
    /proc1 exch cvlit def
    /newproc proc1 length proc2 length add array def
    newproc 0 proc1 putinterval
    newproc proc1 length proc2 putinterval
    newproc cvx
} bind def
/ngrayt 256 array def
/nredt 256 array def
/nbluet 256 array def
/ngreent 256 array def
	/gryt FMLOCAL
	/blut FMLOCAL
	/grnt FMLOCAL
	/redt FMLOCAL
	/indx FMLOCAL
	/cynu FMLOCAL
	/magu FMLOCAL
	/yelu FMLOCAL
	/k FMLOCAL
	/u FMLOCAL
/colorsetup {
	currentcolortransfer
	/gryt exch def
	/blut exch def
	/grnt exch def
	/redt exch def
	0 1 255 {
		/indx exch def
		/cynu 1 red indx get 255 div sub def
		/magu 1 green indx get 255 div sub def
		/yelu 1 blue indx get 255 div sub def
		/k cynu magu min yelu min def
		/u k currentundercolorremoval exec def
		nredt indx 1 0 cynu u sub max sub redt exec put
		ngreent indx 1 0 magu u sub max sub grnt exec put
		nbluet indx 1 0 yelu u sub max sub blut exec put
		ngrayt indx 1 k currentblackgeneration exec sub gryt exec put
	} for
	{255 mul cvi nredt exch get}
	{255 mul cvi ngreent exch get}
	{255 mul cvi nbluet exch get}
	{255 mul cvi ngrayt exch get}
	setcolortransfer
	{pop 0} setundercolorremoval
	{} setblackgeneration
	} bind def
	/tran FMLOCAL
/fakecolorsetup {
	/tran 256 string def
	0 1 255 {/indx exch def 
		tran indx
		red indx get 77 mul
		green indx get 151 mul
		blue indx get 28 mul
		add add 256 idiv put} for
	currenttransfer
	{255 mul cvi tran exch get 255.0 div}
	exch Fmcc settransfer
} bind def
/BITMAPCOLOR { 
	/d 8 def
	gsave
	translate rotate scale /h exch def /w exch def
	/bitmapsave save def 
	colorsetup
	/is w d wbytes string def
	/cf currentfile def 
	w h d [w 0 0 h neg 0 h] 
	{cf is readhexstring pop} {is} {is} true 3 colorimage 
	bitmapsave restore 
	grestore
	} bind def
/BITMAPCOLORc { 
	/d 8 def
	gsave
	translate rotate scale /h exch def /w exch def
	/lb w d wbytes def 
	sl lb lt {lb ms} if 
	/bitmapsave save def 
	colorsetup
	/is im 0 lb getinterval def 
	ws 0 lb getinterval is copy pop 
	/cf currentfile def 
	w h d [w 0 0 h neg 0 h] 
	{ip} {is} {is} true 3 colorimage
	bitmapsave restore 
	grestore
	} bind def
/BITMAPTRUECOLORc { 
        gsave
        translate rotate scale /h exch def /w exch def
        /bitmapsave save def 
        
        /is w string def
        
        ws 0 w getinterval is copy pop 
        /cf currentfile def 
        w h 8 [w 0 0 h neg 0 h] 
        {ip} {gip} {bip} true 3 colorimage
        bitmapsave restore 
        grestore
        } bind def
/BITMAPTRUECOLOR { 
        gsave
        translate rotate scale /h exch def /w exch def
        /bitmapsave save def 
        /is w string def
        /gis w string def
        /bis w string def
        /cf currentfile def 
        w h 8 [w 0 0 h neg 0 h] 
        { cf is readhexstring pop } 
        { cf gis readhexstring pop } 
        { cf bis readhexstring pop } 
        true 3 colorimage 
        bitmapsave restore 
        grestore
        } bind def
/BITMAPTRUEGRAYc { 
        gsave
        translate rotate scale /h exch def /w exch def
        /bitmapsave save def 
        
        /is w string def
        
        ws 0 w getinterval is copy pop 
        /cf currentfile def 
        w h 8 [w 0 0 h neg 0 h] 
        {ip gip bip w gray} image
        bitmapsave restore 
        grestore
        } bind def
/ww FMLOCAL
/r FMLOCAL
/g FMLOCAL
/b FMLOCAL
/i FMLOCAL
/gray { 
        /ww exch def
        /b exch def
        /g exch def
        /r exch def
        0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul
			b i get .114 mul add add r i 3 -1 roll floor cvi put } for
        r
        } bind def
/BITMAPTRUEGRAY { 
        gsave
        translate rotate scale /h exch def /w exch def
        /bitmapsave save def 
        /is w string def
        /gis w string def
        /bis w string def
        /cf currentfile def 
        w h 8 [w 0 0 h neg 0 h] 
        { cf is readhexstring pop 
          cf gis readhexstring pop 
          cf bis readhexstring pop w gray}  image
        bitmapsave restore 
        grestore
        } bind def
/BITMAPGRAY { 
	8 {fakecolorsetup} COMMONBITMAP
	} bind def
/BITMAPGRAYc { 
	8 {fakecolorsetup} COMMONBITMAPc
	} bind def
/ENDBITMAP {
	} bind def
end 
	/ALDsave FMLOCAL
	/ALDmatrix matrix def ALDmatrix currentmatrix pop
/StartALD {
	/ALDsave save def
	 savematrix
	 ALDmatrix setmatrix
	} bind def
/InALD {
	 restorematrix
	} bind def
/DoneALD {
	 ALDsave restore
	} bind def
%%EndProlog
%%BeginSetup
(3.0) FMVERSION
1 1 612 792 0 1 20 FMDOCUMENT
0 0 /Helvetica-Bold FMFONTDEFINE
1 0 /Times-Roman FMFONTDEFINE
2 0 /Times-Italic FMFONTDEFINE
3 0 /Times-Bold FMFONTDEFINE
4 0 /NewCenturySchlbk-Roman FMFONTDEFINE
5 0 /Courier-Bold FMFONTDEFINE
6 1 /Symbol FMFONTDEFINE
7 0 /NewCenturySchlbk-Italic FMFONTDEFINE
8 0 /NewCenturySchlbk-Bold FMFONTDEFINE
9 0 /Helvetica-BoldOblique FMFONTDEFINE
10 0 /Courier-BoldOblique FMFONTDEFINE
11 0 /Courier FMFONTDEFINE
12 0 /Helvetica FMFONTDEFINE
32 FMFILLS
0 0 FMFILL
1 .1 FMFILL
2 .3 FMFILL
3 .5 FMFILL
4 .7 FMFILL
5 .9 FMFILL
6 .97 FMFILL
7 1 FMFILL
8 <0f1e3c78f0e1c387> FMFILL
9 <0f87c3e1f0783c1e> FMFILL
10 <cccccccccccccccc> FMFILL
11 <ffff0000ffff0000> FMFILL
12 <8142241818244281> FMFILL
13 <03060c183060c081> FMFILL
14 <8040201008040201> FMFILL
16 1 FMFILL
17 .9 FMFILL
18 .7 FMFILL
19 .5 FMFILL
20 .3 FMFILL
21 .1 FMFILL
22 0.03 FMFILL
23 0 FMFILL
24 <f0e1c3870f1e3c78> FMFILL
25 <f0783c1e0f87c3e1> FMFILL
26 <3333333333333333> FMFILL
27 <0000ffff0000ffff> FMFILL
28 <7ebddbe7e7dbbd7e> FMFILL
29 <fcf9f3e7cf9f3f7e> FMFILL
30 <7fbfdfeff7fbfdfe> FMFILL
%%EndSetup
%%Page: "53" 53
%%BeginPaperSize: Letter
%%EndPaperSize
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(53) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
1 F
0 X
-0.22 ([Lang and Perlmutter 1986]  K. Lang and B. Perlmutter.  Oaklisp: an Object-Oriented Scheme with First Class Types.) 72 713.33 P
(Proceedings OOPSLA \32586, 30-37, September 1986.) 90 693.33 T
-0.41 ([Maes and Nardi 1987]  P. Maes and D. Nardi.) 72 668.33 P
2 F
-0.41 (Meta-Level Architectures and Reflection.) 259.59 668.33 P
1 F
-0.41 (North-Holland, Amsterdam,) 427.43 668.33 P
(August 1987.) 90 648.33 T
0.11 ([Manning 1987]  C.R. Manning.) 72 623.33 P
2 F
0.11 (ACORE: The Design of a Core Actor Language and its Compiler.) 207.33 623.33 P
1 F
0.11 (Master\325s thesis,) 477.15 623.33 P
(A.I. Laboratory, M.I.T., August 1987.) 90 603.33 T
([Rees and Clinger 1987]  J. Rees and W. Clinger \050eds.\051) 72 574.33 T
2 F
(Revised) 297.12 574.33 T
1 F
(3) 328.2 578.33 T
2 F
( Report on the Algorithmic Language Scheme) 333.2 574.33 T
1 F
(.) 515.86 574.33 T
-0.12 ([Scheevel and Tomlinson]  M. Scheevel and C. Tomlinson.) 72 549.33 P
2 F
-0.12 (Ceres Language Manual) 313.18 549.33 P
1 F
-0.12 (.  MCC Technical Report ACA-) 412.33 549.33 P
(ST-145-88\050Q\051, April 1988.) 90 529.33 T
0.19 ([Snyder 1987]  A. Snyder.  \322Inheritance and the Development of Encapsulated Software Components.\323  in Research) 72 504.33 P
(Directions in Object-Oriented Languages, Shriver and Wegner eds., 165-188, 1987.) 90 484.33 T
-0.45 ([Sussman and Steele 1975]  G. Sussman and G. Steele.) 72 459.33 P
2 F
-0.45 (An Interpreter for Extended Lambda Calculus) 291.95 459.33 P
1 F
-0.45 (.  MIT AI Memo) 474.33 459.33 P
(349, December 1975.) 90 439.33 T
-0.35 ([Tomlinson 1989] C. Tomlinson and V. Singh.  \322Synchronization and Inheritance with Enabled-Sets.\323  in Proceedings) 72 414.33 P
(OOPSLA \32589, October 1989.) 90 394.33 T
-0.12 ([Watanabe and Yonezawa 1988] T. Watanabe and A. Yonezawa.  "Reflection in an Object-Oriented Concurrent Lan-) 72 369.33 P
-0.58 (guage."  To appear in Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages) 90 349.33 P
(and Applications \050OOPSLA\051, September 1988.) 90 329.33 T
0.29 ([Yoshida and Chikayama 1988]  K. Yoshida and T. Chikayama.) 72 304.33 P
2 F
0.29 (A\325UM \321 A Stream-Based Concurrent Object-Ori-) 336.73 304.33 P
(ented Language.) 90 284.33 T
1 F
(  ICOT Technical Report, 1988.) 156.62 284.33 T
FMENDPAGE
%%EndPage: "53" 52
%%Page: "52" 52
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(52) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 12 Q
0 X
(References) 72 712 T
1 10 Q
-0.14 ([Agha 1986]  G. Agha.) 72 693.33 P
2 F
-0.14 (Actors: A Model of Concurrent Computation in Distributed) 168.3 693.33 P
-0.14 (Systems) 407.6 693.33 P
1 F
-0.14 (.  MIT Press, Cambridge,) 439.24 693.33 P
(Mass., 1986.) 90 673.33 T
0.08 ([Agha et al. 1988]  G. Agha, W. Kim, M. Scheevel, V. Singh, C. Tomlinson, and R. Will.) 72 648.33 P
2 F
0.08 (Rosette: An Object-Based) 436.59 648.33 P
(Concurrent Systems Architecture.) 90 628.33 T
1 F
(  MCC/ACA Technical Report ACA-ST-254-88\050Q\051, August 1988.) 225.19 628.33 T
0.33 ([Ametek 1988]) 72 600.67 P
2 F
0.33 (Programmer\325s Guide to the Series 2010) 138.77 600.67 P
1 8 Q
0.26 (TM) 300.58 604.67 P
2 10 Q
0.33 ( System) 312.58 600.67 P
1 F
0.33 (.  Ametek Computer Research Division, prelimi-) 343.16 600.67 P
(nary, June 16, 1988.) 90 580.67 T
0.83 ([Athas 1987]  W.C. Athas.) 72 555.67 P
2 F
0.83 (Fine Grain Concurrent Computers.) 188.85 555.67 P
1 F
0.83 (  Ph.D. Thesis, California Institute of Technology,) 333.48 555.67 P
(1987.) 90 535.67 T
0.21 ([Augustsson 1985]  L. Augustsson.  Compiling Pattern Matching.  Proceedings Functional Programming Languages) 72 510.67 P
(and Computer Architecture Conference, Springer Verlag LNCS 201, 368-381, September 1985.) 90 490.67 T
-0.5 ([Bawden and Rees 1988]  A. Bawden and J. Rees.  Syntactic Closures.  Proceedings Lisp and Functional Programming) 72 465.67 P
(Conference 1988, 86-95, July 1988.) 90 445.67 T
0.09 ([Delagi et al. 1987]  B.A. Delagi, N. Saraiya, S. Nishimura, and G. Byrd.  An Instrumented Architectural Simulation) 72 420.67 P
(System.  STAN-CS-87-1148, Computer Science Department, Stanford University, January, 1987.) 90 400.67 T
([Dijkstra 1975]  E. Dijkstra.) 72 375.67 T
2 F
(A Discipline of Programming) 189.15 375.67 T
1 F
(.  Prentice Hall, 1975.) 307.69 375.67 T
-0.36 ([Dybvig and Hieb 1988]  K. Dybvig and R. Hieb.  A Variable-Arity Procedural Interface.  Proceedings Lisp and Func-) 72 350.67 P
(tional Programming Conference 1988, 106-115, July 1988.) 90 330.67 T
([Encore 1985]) 72 305.67 T
2 F
(Multimax technical summary.) 134.45 305.67 T
1 F
(  Encore Computer Corporation, May 1985.) 253.53 305.67 T
([Gabriel et al. 1988]  R. Gabriel et al.) 72 280.67 T
2 F
(Common Lisp Object System) 226.6 280.67 T
1 F
(.  ANSI X3J13 Document 87-002.) 341.81 280.67 T
-0.13 ([Gelernter 1985]  D.H. Gelernter.  \322Generative Communication in Linda.\323  ACM Transactions on Programming Lan-) 72 255.67 P
(guages and Systems, 80-112, Jan. 1985.) 90 235.67 T
-0.31 ([Goldberg and Robson 1983]  A. Goldberg and D. Robson.) 72 210.67 P
2 F
-0.31 (Smalltalk-80: The Language and its Implementation) 310.09 210.67 P
1 F
-0.31 (.  Ad-) 517.58 210.67 P
(dison Wesley, 1983.) 90 190.67 T
([Hoare 1984]  C.A.R. Hoare, ed.) 72 165.67 T
2 F
( Occam Programming Manual.) 204.95 165.67 T
1 F
(Prentice-Hall, Englewood Cliffs, NJ, 1984.) 335.42 165.67 T
-0.57 ([Kohlbecker 1986]  E. Kohlbecker.) 72 140.67 P
2 F
-0.57 (Syntactic Extensions in the Programming Language Lisp) 214.55 140.67 P
1 F
-0.57 (.  U. Indiana Dept. Comp.) 439.32 140.67 P
(Sci. Technical Report 199, August 1986.) 90 120.67 T
0.14 ([LaLonde et al. 1986]  W.R. LaLonde, D.A. Thomas, and J.R. Pugh.  \322An Exemplar Based Smalltalk.\323  Proceedings) 72 95.67 P
(1986 OOPSLA, 322-330.) 90 75.67 T
FMENDPAGE
%%EndPage: "52" 51
%%Page: "51" 51
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(51) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
-0.56 (with a suffix of) 72 713.33 P
5 F
-1.22 (.rbl) 141.56 713.33 P
4 F
-0.56 ( concatenated.  If the) 165.55 713.33 P
5 F
-1.22 (\325silent) 262.48 713.33 P
4 F
-0.56 ( option is given then no results are displayed during) 304.46 713.33 P
(loading.) 72 693.33 T
5 F
(\050repl\051) 72 668.33 T
6 F
(\336) 113.98 668.33 T
5 F
( #niv) 123.84 668.33 T
1 F
(procedure) 500.04 668.33 T
5 F
(\050reset\051) 72 658.33 T
6 F
(\336) 119.97 658.33 T
5 F
( #niv) 129.84 658.33 T
1 F
(procedure) 500.04 658.33 T
5 F
(\050rosette\051) 72 648.33 T
6 F
(\336) 131.97 648.33 T
5 F
( #niv) 141.83 648.33 T
1 F
(procedure) 500.04 648.33 T
5 F
(\050kernel\051) 72 638.33 T
6 F
(\336) 125.97 638.33 T
5 F
( #niv) 135.84 638.33 T
1 F
(procedure) 500.04 638.33 T
4 F
-0.05 (Interaction with the Rosette system is mediated by a listener-loop.  The usual listener-loop is invoked) 72 618.33 P
-0.45 (by the) 72 598.33 P
5 F
-0.96 (rosette) 102.58 598.33 P
4 F
-0.45 ( procedure.  This loop uses the syntax expander on all expressions read in.  The prompt) 144.56 598.33 P
-0.57 (used in this loop is:) 72 578.33 P
5 F
-1.22 (rosette>) 160.98 578.33 P
4 F
-0.57 (.  The) 208.96 578.33 P
5 F
-1.22 (rosette) 236.14 578.33 P
4 F
-0.57 ( procedure sets) 278.12 578.33 P
5 F
-1.22 (repl) 348.78 578.33 P
4 F
-0.57 ( to the Rosette repl procedure so that) 372.76 578.33 P
5 F
0.41 (reset) 72 558.33 P
4 F
0.19 ( will restart the Rosette listener-loop.  The) 101.98 558.33 P
5 F
0.41 (reset) 302.49 558.33 P
4 F
0.19 ( procedure is invoked by the virtual machine) 332.48 558.33 P
0.61 (when it is interrupted by the user and on handling errors.  The procedure) 72 538.33 P
5 F
1.31 (kernel) 422.88 538.33 P
4 F
0.61 ( is similar to) 458.86 538.33 P
5 F
1.31 (ro-) 522.01 538.33 P
-0.43 (sette) 72 518.33 P
4 F
-0.2 ( but enters the primitive listener supported directly by the virtual machine.  Its prompt is) 101.98 518.33 P
5 F
-0.43 (ker-) 516.01 518.33 P
0.21 (nel>) 72 498.33 P
4 F
0.1 (.  The most significant difference between the two listeners is that the) 95.99 498.33 P
5 F
0.21 (kernel) 422.88 498.33 P
4 F
0.1 ( does not call) 458.86 498.33 P
5 F
0.21 (ex-) 522.01 498.33 P
-0.09 (pand) 72 478.33 P
4 F
-0.04 ( on expressions that are read in, thus none of the derived syntax forms are available.  If an error) 95.99 478.33 P
0.28 (occurs that terminates the) 72 458.33 P
5 F
0.6 (rosette) 198.24 458.33 P
4 F
0.28 ( listener and puts the machine in the) 240.22 458.33 P
5 F
0.6 (kernel) 416.27 458.33 P
4 F
0.28 ( loop then a) 452.25 458.33 P
5 F
0.6 (reset) 510.02 458.33 P
4 F
(will usually solve the problem.) 72 438.33 T
FMENDPAGE
%%EndPage: "51" 50
%%Page: "50" 50
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(50) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(\050read) 72 713.33 T
2 F
(Istream) 107.98 713.33 T
5 F
(\051) 138.51 713.33 T
6 F
(\336) 150.51 713.33 T
2 F
(expression or) 166.37 713.33 T
5 F
(#eof) 223 713.33 T
1 F
(operation) 502.25 713.33 T
4 F
(This operation reads a single expression from the stream or returns) 72 693.33 T
5 F
(#eof) 387.4 693.33 T
4 F
1.18 ( if at the end.  If the) 411.38 693.33 P
5 F
2.56 (read) 516.01 693.33 P
4 F
0.62 (operation detects a syntax error then it returns the constant) 72 673.33 P
5 F
1.34 (#eof) 359.53 673.33 P
4 F
0.62 ( and sets the read-state of the) 383.52 673.33 P
7 F
0.62 (Is-) 528.17 673.33 P
(tream) 72 653.33 T
4 F
( to failed.) 99.01 653.33 T
5 F
(\050state) 72 628.33 T
2 F
(Istream) 113.98 628.33 T
5 F
(\051) 144.51 628.33 T
6 F
(\336) 156.5 628.33 T
5 F
( 0 ... 7) 166.37 628.33 T
1 F
(operation) 502.25 628.33 T
5 F
(\050failed?) 72 618.33 T
2 F
(Istream) 125.97 618.33 T
5 F
(\051) 156.5 618.33 T
6 F
(\336) 168.5 618.33 T
2 F
(Boolean) 184.36 618.33 T
1 F
(operation) 502.25 618.33 T
5 F
(\050clear) 72 608.33 T
2 F
(Istream) 113.98 608.33 T
5 F
(\051) 144.51 608.33 T
6 F
(\336) 156.5 608.33 T
2 F
(Istream) 172.37 608.33 T
1 F
(operation) 502.25 608.33 T
4 F
0.61 (The) 72 588.33 P
5 F
1.33 (state) 93.16 588.33 P
4 F
0.61 ( operation returns the read-state of the stream.) 123.15 588.33 P
5 F
1.33 (0) 352.64 588.33 P
4 F
0.61 ( signifies a good read.  If the result in-) 358.63 588.33 P
-0.19 (cludes the) 72 568.33 P
5 F
-0.41 (1) 121.23 568.33 P
4 F
-0.19 ( bit then an end-of-file condition has occurred.  If the result includes the) 127.22 568.33 P
5 F
-0.41 (2) 459.41 568.33 P
4 F
-0.19 ( bit then the Ro-) 465.41 568.33 P
0.09 (sette reader has signalled a failed read.  This is typically due to a syntax error on input.  If the result) 72 548.33 P
0.13 (includes a) 72 528.33 P
5 F
0.27 (4) 121.68 528.33 P
4 F
0.13 ( bit then some other form of corruption has occurred on the stream.  The) 127.67 528.33 P
5 F
0.27 (failed?) 466.06 528.33 P
4 F
0.13 ( opera-) 508.04 528.33 P
0.37 (tion is a convenient way of determining whether the reader detected a syntax error or not.  If a read) 72 508.33 P
-0.47 (fails then the stream should be cleared with the) 72 488.33 P
5 F
-1 (clear) 291.61 488.33 P
4 F
-0.47 ( operation.  If the read-state is not good or failed) 321.6 488.33 P
0.01 (then the stream should be closed.  Clearing a stream that is at end-of-file or bad and then attempting) 72 468.33 P
(to) 72 448.33 T
5 F
(read) 83.66 448.33 T
4 F
( will cause a non-recoverable error.) 107.65 448.33 T
5 F
(\050print) 72 423.33 T
2 F
(items) 113.98 423.33 T
5 F
(\051) 135.07 423.33 T
6 F
(\336) 147.07 423.33 T
5 F
( #niv) 156.93 423.33 T
1 F
(operation) 502.25 423.33 T
5 F
(\050print) 72 413.33 T
2 F
(Ostream) 113.98 413.33 T
(items) 154.4 413.33 T
5 F
(\051) 175.49 413.33 T
6 F
(\336) 187.49 413.33 T
5 F
( #niv) 197.35 413.33 T
1 F
(operation) 502.25 413.33 T
5 F
(\050print\134n) 72 403.33 T
2 F
(items) 125.97 403.33 T
5 F
(\051) 147.07 403.33 T
6 F
(\336) 159.06 403.33 T
5 F
( #niv) 168.93 403.33 T
1 F
(operation) 502.25 403.33 T
5 F
(\050print\134n) 72 393.33 T
2 F
(Ostream) 125.97 393.33 T
(items) 166.39 393.33 T
5 F
(\051) 187.49 393.33 T
6 F
(\336) 199.48 393.33 T
5 F
( #niv) 209.35 393.33 T
1 F
(operation) 502.25 393.33 T
5 F
(\050display) 72 383.33 T
2 F
(items) 125.97 383.33 T
5 F
(\051) 147.07 383.33 T
6 F
(\336) 159.06 383.33 T
5 F
( #niv) 168.93 383.33 T
1 F
(operation) 502.25 383.33 T
5 F
(\050display) 72 373.33 T
2 F
(Ostream) 125.97 373.33 T
(items) 166.39 373.33 T
5 F
(\051) 187.49 373.33 T
6 F
(\336) 199.48 373.33 T
5 F
( #niv) 209.35 373.33 T
1 F
(operation) 502.25 373.33 T
4 F
-0.09 (These operations are the basic means of performing output.  Each are variadic and may be applied di-) 72 353.33 P
0.44 (rectly to an output stream or not.  If no output stream is used then) 72 333.33 P
5 F
0.96 (stdout) 389.43 333.33 P
4 F
0.44 ( is assumed.) 425.41 333.33 P
5 F
0.96 (print) 489.39 333.33 P
4 F
0.44 ( and) 519.38 333.33 P
5 F
0.4 (print\134n) 72 313.33 P
4 F
0.19 ( include quotes on strings, expressions and symbols where) 113.98 313.33 P
5 F
0.4 (display) 387.19 313.33 P
4 F
0.19 ( does not.) 429.16 313.33 P
5 F
0.4 (print\134n) 479.15 313.33 P
4 F
0.19 ( fin-) 521.12 313.33 P
(ishes printing with a new-line.) 72 293.33 T
5 F
(\050flush) 72 268.33 T
2 F
(Ostream) 113.98 268.33 T
5 F
(\051) 148.4 268.33 T
6 F
(\336) 160.39 268.33 T
5 F
( #niv) 170.26 268.33 T
1 F
(operation) 502.25 268.33 T
4 F
(The) 72 248.33 T
5 F
(flush) 92.55 248.33 T
4 F
( operation ensures that all output to the stream has reached the destination file.) 122.53 248.33 T
5 F
(\050load) 72 223.33 T
2 F
(file_id) 107.98 223.33 T
5 F
( & \325silent\051) 133.53 223.33 T
6 F
(\336) 205.49 223.33 T
5 F
( #niv) 215.35 223.33 T
1 F
(procedure) 500.04 223.33 T
4 F
0.37 (The) 72 203.33 P
5 F
0.8 (load) 92.92 203.33 P
4 F
0.37 ( procedure provides for reading in and expanding, compiling, and running a file containing) 116.9 203.33 P
0.35 (Rosette expressions.  The) 72 183.33 P
7 F
0.35 (file_id) 193.33 183.33 P
4 F
0.35 ( may be either a string or a symbol.  If the) 222.18 183.33 P
7 F
0.35 (file_id) 423.49 183.33 P
4 F
0.35 ( is a fully qualified) 452.34 183.33 P
0.2 (UNIX pathname then) 72 163.33 P
5 F
0.44 (load) 176.27 163.33 P
4 F
0.2 ( uses it directly signalling an error if the named file cannot be opened.  If) 200.26 163.33 P
-0.39 (the) 72 143.33 P
7 F
-0.39 (file_id) 89.38 143.33 P
4 F
-0.39 ( is not fully qualified then a search process is initiated.  If the) 118.23 143.33 P
5 F
-0.84 (load) 399.5 143.33 P
4 F
-0.39 ( occurs within a file being) 423.49 143.33 P
0.16 (loaded then the directory from which the load is occurring is searched first, next the current working) 72 123.33 P
-0.12 (directory is searched, and finally the tuple of paths in the variable) 72 103.33 P
5 F
-0.26 (load-paths) 379.11 103.33 P
4 F
-0.12 ( is searched for) 439.08 103.33 P
7 F
-0.12 (file_id) 511.14 103.33 P
FMENDPAGE
%%EndPage: "50" 49
%%Page: "49" 49
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(49) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
-0.23 (that defines how to expand the request expression.  Most syntax extensions in Rosette are implement-) 72 713.33 P
(ed in just this way.  In order to facilitate these definitions the following form is provided:) 72 693.33 T
5 F
(\050defExpander \050) 72 668.33 T
2 F
(id) 155.95 668.33 T
(id) 169.73 668.33 T
5 F
(\325\051) 177.5 668.33 T
2 F
(body) 195.49 668.33 T
5 F
(\051) 214.92 668.33 T
6 F
(\336) 226.91 668.33 T
5 F
( \325) 236.78 668.33 T
2 F
(id) 248.77 668.33 T
1 F
(derived syntax) 481.43 668.33 T
4 F
-0.2 (The) 72 648.33 P
5 F
-0.44 (defExpander) 92.35 648.33 P
4 F
-0.2 ( syntax defines the method, the anonymous operation, and other bookkeeping asso-) 158.31 648.33 P
-0.26 (ciated with introducing) 72 628.33 P
7 F
-0.26 (id) 181.73 628.33 P
4 F
-0.26 ( as a new syntactic keyword.  The) 191.16 628.33 P
7 F
-0.26 (id) 347.19 628.33 P
5 F
-0.56 (\325) 356.63 628.33 P
4 F
-0.26 ( is whatever the macro writer wants to) 362.62 628.33 P
0.47 (call the expander argument that will be passed when the new expander method is invoked.  The ex-) 72 608.33 P
0.15 (pander operation bound to) 72 588.33 P
7 F
0.15 (id) 197.55 588.33 P
5 F
0.33 (\325) 206.98 588.33 P
4 F
0.15 ( is typically used to expand sub-structure and is itself passed on in the) 212.98 588.33 P
-0.19 (recursive descent.  The method that is built by) 72 568.33 P
5 F
-0.4 (defExpander) 287.84 568.33 P
4 F
-0.19 ( is defined in the context of the prototyp-) 353.8 568.33 P
-0.23 (ical) 72 548.33 P
5 F
-0.49 (RequestExpr) 90.84 548.33 P
4 F
-0.23 ( so that the) 156.81 548.33 P
5 F
-0.49 (trgt) 211.07 548.33 P
4 F
-0.23 ( and) 235.06 548.33 P
5 F
-0.49 (msg) 257.57 548.33 P
4 F
-0.23 ( slots may be referred to directly in the) 275.56 548.33 P
7 F
-0.23 (body) 455.85 548.33 P
4 F
-0.23 (.  Essentially,) 477.51 548.33 P
5 F
-0.15 (defExpander) 72 528.33 P
4 F
-0.07 ( defines an extension to the behavior of) 137.96 528.33 P
5 F
-0.15 (RequestExpr) 320.86 528.33 P
4 F
-0.07 (s.  The expander for) 386.82 528.33 P
5 F
-0.15 (and) 481.25 528.33 P
4 F
-0.07 ( \050see sec-) 499.24 528.33 P
(tion) 72 508.33 T
8 F
(7.2) 92.92 508.33 T
4 F
(\051 may be written:) 107.17 508.33 T
5 F
(\050defExpander \050and e\051) 108 483.33 T
(  \050cond \050\050same? msg \325[]\051  \325#t\051) 108 473.33 T
(        \050\050= \050size msg\051 1\051 \050e \050head msg\051 e\051) 108 463.33 T
(        \050else             \050new IfExpr) 108 453.33 T
(                               \050e \050head msg\051 e\051) 108 443.33 T
(                               \050e \050new RequestExpr \325and \050tail msg\051\051 e\051) 108 433.33 T
(                               #f\051\051\051\051) 108 423.33 T
4 F
0.26 (The first clause of the) 72 403.33 P
5 F
0.56 (cond) 176.57 403.33 P
4 F
0.26 ( defines the case of) 200.56 403.33 P
5 F
0.56 (\050and\051) 291.62 403.33 P
4 F
0.26 ( as simply) 321.61 403.33 P
5 F
0.56 (#t) 371.81 403.33 P
4 F
0.26 (.  The second clause says that the) 383.81 403.33 P
0 (result of) 72 383.33 P
5 F
0 (\050and) 113.09 383.33 P
7 F
0 (expr) 143.07 383.33 P
5 F
0 (\051) 162.68 383.33 P
4 F
0 ( is simply the result of) 168.68 383.33 P
7 F
0 (expr) 274.57 383.33 P
4 F
0 (.  In this case, the) 294.17 383.33 P
5 F
0 (\050head msg\051) 378.96 383.33 P
4 F
0 ( is the single) 438.93 383.33 P
7 F
0 (expr) 500.21 383.33 P
4 F
0 ( and) 519.82 383.33 P
0.32 (it should be expanded with whatever expander is bound to) 72 363.33 P
5 F
0.69 (e) 347.69 363.33 P
4 F
0.32 (.  The) 353.69 363.33 P
5 F
0.69 (else) 383.54 363.33 P
4 F
0.32 ( case applies when there are) 407.52 363.33 P
0.25 (two or more conditions being anded.  In these cases, a new) 72 343.33 P
5 F
0.54 (IfExpr) 347.31 343.33 P
4 F
0.25 ( is built with the expansion of the) 383.29 343.33 P
5 F
-0.19 (\050head msg\051) 72 323.33 P
4 F
-0.09 ( as the condition of the) 131.78 323.33 P
5 F
-0.19 (IfExpr) 238.98 323.33 P
4 F
-0.09 (, the expansion of a new) 274.96 323.33 P
5 F
-0.19 (and) 388.27 323.33 P
4 F
-0.09 ( form on the) 406.27 323.33 P
5 F
-0.19 (\050tail msg\051) 464.77 323.33 P
4 F
-0.09 ( for) 524.55 323.33 P
-0.07 (the then-branch, and) 72 303.33 P
5 F
-0.15 (#f) 171.93 303.33 P
4 F
-0.07 ( for the else-branch.  Thus if the expression resulting from) 183.93 303.33 P
5 F
-0.15 (\050head msg\051) 455.07 303.33 P
4 F
-0.07 ( eval-) 514.89 303.33 P
-0.01 (uates to) 72 283.33 P
5 F
-0.01 (#f) 111.61 283.33 P
4 F
-0.01 ( then the) 123.6 283.33 P
5 F
-0.01 (and) 168.01 283.33 P
4 F
-0.01 ( terminates immediately with) 186 283.33 P
5 F
-0.01 (#f) 326.29 283.33 P
4 F
-0.01 (; otherwise, process continues with the next) 338.29 283.33 P
(argument to the) 72 263.33 T
5 F
(and) 149.56 263.33 T
4 F
(.) 167.55 263.33 T
3 12 Q
(11.) 72 232 T
(Input and output) 90 232 T
4 10 Q
-0.45 (This section defines some basic facilities for performing input and output on streams.  The streams ini-) 72 206.33 P
(tially defines are named) 72 186.33 T
5 F
(stdin) 186.59 186.33 T
4 F
(,) 216.57 186.33 T
5 F
(stdout) 222.13 186.33 T
4 F
(, and) 258.11 186.33 T
5 F
(stderr) 283.84 186.33 T
4 F
(.) 319.82 186.33 T
5 F
(\050new) 72 161.33 T
2 F
(Istream_or_Ostream) 101.98 161.33 T
(file_id) 191.81 161.33 T
5 F
( &) 217.36 161.33 T
2 F
(how) 235.35 161.33 T
5 F
(\051) 252.01 161.33 T
6 F
(\336) 264 161.33 T
2 F
(Istream_or_Ostream) 279.87 161.33 T
1 F
(operation) 502.25 161.33 T
4 F
(The) 72 141.33 T
5 F
(new) 92.55 141.33 T
4 F
( operation creates a new stream of the appropriate kind.) 110.54 141.33 T
5 F
(\050close) 72 116.33 T
2 F
(stream) 113.98 116.33 T
5 F
(\051) 141.18 116.33 T
6 F
(\336) 153.18 116.33 T
5 F
( #niv) 163.04 116.33 T
1 F
(operation) 502.25 116.33 T
4 F
0 (The) 72 96.33 P
5 F
0.01 (close) 92.55 96.33 P
4 F
0 ( operation closes the) 122.54 96.33 P
7 F
0 (stream) 219.35 96.33 P
4 F
0 (.  It should be noted that streams are also closed by the virtual) 250.81 96.33 P
(machine when they are garbage collected so it is not strictly necessary to explicitly close a stream.) 72 76.33 T
FMENDPAGE
%%EndPage: "49" 48
%%Page: "48" 48
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(48) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 63 540 720 R
V
3 12 Q
0 X
(9.4.) 72 712 T
(Error operations) 108 712 T
4 10 Q
-0.43 (The error operations are synchronous operations that are applied to various entities by the virtual ma-) 72 693.33 P
-0.32 (chine or other Rosette code.  They are used to signal that certain exceptional conditions have occurred.) 72 673.33 P
0.64 (In Rosette 1.0 the context that was in error can not be continued but useful information can be dis-) 72 653.33 P
-0.2 (played.  The error operations are:) 72 633.33 P
5 F
-0.44 (runtime-error) 228.11 633.33 P
4 F
-0.2 (,) 306.07 633.33 P
5 F
-0.44 (missing-method) 311.42 633.33 P
4 F
-0.2 (,) 395.38 633.33 P
5 F
-0.44 (formals-mismatch) 400.73 633.33 P
4 F
-0.2 (, and) 496.68 633.33 P
5 F
-0.44 (vm-) 522.01 633.33 P
-1.34 (error) 72 613.33 P
4 F
-0.62 (.  The) 101.98 613.33 P
5 F
-1.34 (runtime-error) 129.01 613.33 P
4 F
-0.62 ( is issued on most errors and with future releases will be replaced by finer) 206.97 613.33 P
-0.04 (grained error operations.  The) 72 593.33 P
5 F
-0.09 (missing-method) 213.39 593.33 P
4 F
-0.04 ( error occurs exactly when a message is received and) 297.35 593.33 P
0.54 (no method can be located.  The) 72 573.33 P
5 F
1.17 (formals-mismatch) 220.93 573.33 P
4 F
0.54 ( occurs when a pattern has been violated in the) 316.88 573.33 P
-0.09 (template for a procedure, method, let, or letrec.  The) 72 553.33 P
5 F
-0.19 (vm-error) 315.08 553.33 P
4 F
-0.09 ( occurs if an out-of-bounds reference is) 363.05 553.33 P
-0.58 (made by a lexical lookup byte-code.  This is indicative of either a compiler error, or a mismatch between) 72 533.33 P
(the compiled code for a method and the layout of the map for an entity.) 72 513.33 T
3 12 Q
(10.) 72 482 T
(Syntactic extensions and expression actors) 90 482 T
4 10 Q
0.39 (A syntactic extension mechanism is provided in Rosette so that more convenient forms of expression) 72 456.33 P
0.17 (can be added to the basic syntax of the language.  All derived syntax forms are implemented via syn-) 72 436.33 P
-0.28 (tactic extensions defined in Rosette.  Syntactic extensions are accomplished by writing expanders that) 72 416.33 P
0.63 (transform expressions into other expressions.  In Rosette, expressions are objects in their own right) 72 396.33 P
-0.02 (and are written as literals via the quote) 72 376.33 P
5 F
-0.04 (\325) 258.45 376.33 P
4 F
-0.02 ( \050see sections) 264.44 376.33 P
8 F
-0.02 (4.1) 327.5 376.33 P
4 F
-0.02 ( and) 341.75 376.33 P
8 F
-0.02 (8.1) 364.67 376.33 P
4 F
-0.02 (\051.  This section provides a brief dis-) 378.92 376.33 P
(cussion of the syntax extension \050macro definition\051 facilities of Rosette.) 72 356.33 T
5 F
(\050expand) 72 331.33 T
2 F
(expr) 119.97 331.33 T
5 F
(\051) 137.73 331.33 T
6 F
(\336) 149.73 331.33 T
2 F
(expr) 165.59 331.33 T
5 F
(\325) 183.35 331.33 T
1 F
(operation) 502.25 331.33 T
4 F
0.81 (The) 72 311.33 P
5 F
1.74 (expand) 93.36 311.33 P
4 F
0.81 ( operation recursively descends through the) 129.34 311.33 P
7 F
0.81 (expr) 339.05 311.33 P
4 F
0.81 ( transforming sub-structure as it goes.) 358.66 311.33 P
-0.63 (The syntax expansion model is called expansion-passing style after the concept of continuation-passing) 72 291.33 P
(in Scheme.  The) 72 271.33 T
5 F
(expand) 148.64 271.33 T
4 F
( operation actually performs the following request on) 184.62 271.33 T
7 F
(expr) 432.09 271.33 T
4 F
(:) 451.7 271.33 T
5 F
(\050expander) 108 246.33 T
2 F
(expr) 167.97 246.33 T
5 F
( expander\051) 185.73 246.33 T
4 F
0.11 (There is a method associated with the) 72 226.33 P
8 F
0.11 (expander) 250.83 226.33 P
4 F
0.11 ( operation on every kind of expression and a default) 299.89 226.33 P
1.03 (on all other entities that is the identity.  Every expansion method is passed the \322expander\323 that it) 72 206.33 P
-0.49 (should use to expand sub-structure.  This is why) 72 186.33 P
5 F
-1.06 (expander) 294.33 186.33 P
4 F
-0.49 ( is passed to) 342.3 186.33 P
5 F
-1.06 (expander) 399.4 186.33 P
4 F
-0.49 ( along with the) 447.37 186.33 P
7 F
-0.49 (expr) 517.61 186.33 P
4 F
-0.49 (.) 537.22 186.33 P
0.45 (During expansion other expander operations may be passed in order to achieve context-sensitive ex-) 72 166.33 P
-0.1 (pansion of expressions.  The interesting part of syntax expansion occurs when) 72 146.33 P
5 F
-0.21 (expander) 433.26 146.33 P
4 F
-0.1 ( is applied to) 481.23 146.33 P
0.33 (a request expression.  The method associated with) 72 126.33 P
5 F
0.71 (expander) 309.72 126.33 P
4 F
0.33 ( on) 357.7 126.33 P
5 F
0.71 (RequestExpr) 375.02 126.33 P
4 F
0.33 ( asks the object in its) 440.98 126.33 P
5 F
0.13 (trgt) 72 106.33 P
4 F
0.06 ( slot to return a \322target expander\323 operation that is to be used to expand the request expression.) 95.99 106.33 P
0.12 (The case of interest is when the) 72 86.33 P
5 F
0.26 (trgt) 221.85 86.33 P
4 F
0.12 ( slot contains a symbol that is a syntactic keyword such as) 245.84 86.33 P
5 F
0.26 (and) 519.23 86.33 P
4 F
0.12 (.) 537.22 86.33 P
0.17 (When this occurs an \050anonymous\051 operation is returned that is bound to a method on) 72 66.33 P
5 F
0.38 (RequestExpr) 469.41 66.33 P
4 F
0.17 (s) 535.37 66.33 P
FMENDPAGE
%%EndPage: "48" 47
%%Page: "47" 47
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(47) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
0.21 (tity\325s) 72 713.33 P
5 F
0.44 (mbox) 97.94 713.33 P
4 F
0.21 ( is the) 121.93 713.33 P
5 F
0.44 (EmptyMbox) 153.65 713.33 P
4 F
0.21 (, then the entity has no messages waiting, is not locked, and will accept) 207.62 713.33 P
-0.29 (the next message received \050i.e. the enabled-set is null\051.  The) 72 693.33 P
5 F
-0.63 (mbox) 347.02 693.33 P
4 F
-0.29 ( for all of the non-extensible built en-) 371 693.33 P
0.31 (tities is always the) 72 673.33 P
5 F
0.66 (EmptyMbox) 162.84 673.33 P
4 F
0.31 (.  The) 216.81 673.33 P
5 F
0.66 (LockedMbox) 246.62 673.33 P
4 F
0.31 ( signifies that the entity is busy processing a mes-) 306.59 673.33 P
-0.13 (sage and has no messages waiting.  If an entity has a non-null enabled-set or has messages waiting to) 72 653.33 P
-0.06 (be accepted then it will have) 72 633.33 P
5 F
-0.12 (QueueMbox) 206.06 633.33 P
4 F
-0.06 (.  This kind of mailbox has three slots:) 260.03 633.33 P
5 F
-0.12 (\325locked) 438.55 633.33 P
4 F
-0.06 (,) 480.53 633.33 P
5 F
-0.12 (\325enabled-) 486.03 633.33 P
-0.69 (set) 72 613.33 P
4 F
-0.32 (, and) 89.99 613.33 P
5 F
-0.69 (\325queue) 115.08 613.33 P
4 F
-0.32 (.  The) 151.06 613.33 P
5 F
-0.69 (locked) 178.98 613.33 P
4 F
-0.32 ( slot is) 214.96 613.33 P
5 F
-0.69 (#t) 246.77 613.33 P
4 F
-0.32 ( if the actor is busy and) 258.76 613.33 P
5 F
-0.69 (#f) 367.58 613.33 P
4 F
-0.32 ( otherwise.  The) 379.57 613.33 P
5 F
-0.69 (enabled-set) 454.92 613.33 P
4 F
-0.32 ( slot) 520.88 613.33 P
-0.17 (holds the current enabled-set for the entity, and the) 72 593.33 P
5 F
-0.37 (queue) 312.75 593.33 P
4 F
-0.17 ( slot refers to a) 342.73 593.33 P
5 F
-0.37 (Queue) 413.7 593.33 P
4 F
-0.17 ( object that holds the) 443.68 593.33 P
(messages waiting to be accepted.) 72 573.33 T
5 F
(\050messages) 72 548.33 T
2 F
(any) 131.97 548.33 T
5 F
(\051) 146.4 548.33 T
6 F
(\336) 158.39 548.33 T
2 F
(tuple) 174.25 548.33 T
1 F
(sync-operation) 480.6 548.33 T
4 F
-0.14 (This operation accesses the) 72 528.33 P
5 F
-0.29 (mbox) 200.28 528.33 P
4 F
-0.14 ( of) 224.27 528.33 P
7 F
-0.14 (any) 237.88 528.33 P
4 F
-0.14 ( and returns a tuple of the messages waiting to be accepted by) 254.72 528.33 P
7 F
0.34 (any) 72 508.33 P
4 F
0.34 ( in the order in which they arrived.  It is written in Rosette and can be helpful in debugging con-) 88.84 508.33 P
(current programs.) 72 488.33 T
3 12 Q
(9.3.) 72 457 T
(Monitors) 108 457 T
4 10 Q
-0.35 (A) 72 438.33 P
5 F
-0.75 (Monitor) 81.65 438.33 P
4 F
-0.35 ( is an object that can be passed to the) 123.62 438.33 P
5 F
-0.75 (run) 295.46 438.33 P
4 F
-0.35 ( primitive to monitor the time and resource usage) 313.45 438.33 P
-0.41 (of a collection of entities.  The monitor may be created with a procedure that will be called at each mes-) 72 418.33 P
0.57 (sage step.  Such a procedure is given the message step number and the number of actors waiting to) 72 398.33 P
0.09 (execute in the message step.  The procedure will typically display this information or write it to a file) 72 378.33 P
-0.62 (where it may be analyzed off-line.  A monitor may be \322converted\323 through the primitive) 72 358.33 P
5 F
-1.34 (monitor-con-) 468.04 358.33 P
-0.65 (vert) 72 338.33 P
4 F
-0.3 (.  The result is a tuple consisting the result of the) 95.99 338.33 P
5 F
-0.65 (run) 322.65 338.33 P
4 F
-0.3 ( under which the monitor was used; a triple) 340.64 338.33 P
0.4 (of the user, gc, and system times; a pair consisting of the number of bytecodes executed and the raw) 72 318.33 P
-0.37 (histogram of bytecode usage; a pair consisting of the number of entities created and the raw histogram) 72 298.33 P
0.3 (of entity creations; a pair giving the starting and ending message step numbers for the computation,) 72 278.33 P
-0.02 (and a pair giving the maximum number of actors ready at any step and the total number of messages) 72 258.33 P
(received.  Two procedures are provided to make it more or less convenient to use these facilities.) 72 238.33 T
5 F
(\050time) 72 213.33 T
2 F
(expr) 107.98 213.33 T
5 F
( &) 125.74 213.33 T
2 F
(sentinel) 143.73 213.33 T
5 F
(\051) 174.82 213.33 T
6 F
(\336) 186.82 213.33 T
2 F
(tuple) 202.68 213.33 T
1 F
(procedure) 500.04 213.33 T
5 F
(\050std-sentinel) 72 203.33 T
2 F
(Ostream) 155.95 203.33 T
5 F
(\051) 190.38 203.33 T
6 F
(\336) 202.37 203.33 T
5 F
( #niv) 212.23 203.33 T
1 F
(procedure) 500.04 203.33 T
4 F
0.24 (The) 72 183.33 P
5 F
0.52 (time) 92.79 183.33 P
4 F
0.24 ( procedure is given an expression to monitor and an optional sentinel procedure.  The) 116.78 183.33 P
7 F
0.24 (tuple) 516.87 183.33 P
4 F
0.44 (result of) 72 163.33 P
5 F
0.96 (time) 113.98 163.33 P
4 F
0.44 ( is of the form above for) 137.96 163.33 P
5 F
0.96 (monitor-convert) 252.5 163.33 P
4 F
0.44 (.  Future releases of Rosette will include a) 342.45 163.33 P
0.3 (more friendly interface than a raw tuple of information.  The) 72 143.33 P
5 F
0.66 (std-sentinel) 358.73 143.33 P
4 F
0.3 ( procedure will create a) 430.69 143.33 P
(sentinel that will display the message step and activity at each step on the) 72 123.33 T
7 F
(Ostream) 419.29 123.33 T
4 F
(.) 458.52 123.33 T
FMENDPAGE
%%EndPage: "47" 46
%%Page: "46" 46
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(46) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
-0.56 (for the entity so that the meta information held in the original meta object is inherited by the new meta) 72 713.33 P
(object.  The new meta object only has the basic three slots that are required of any object.) 72 693.33 T
-0.41 (The) 72 668.33 P
5 F
-0.88 (extensible) 92.14 668.33 P
4 F
-0.41 ( slot is either) 152.11 668.33 P
5 F
-0.88 (#t) 213.61 668.33 P
4 F
-0.41 ( or) 225.6 668.33 P
5 F
-0.88 (#f) 239.78 668.33 P
4 F
-0.41 ( corresponding to whether entities described by the meta object) 251.77 668.33 P
-0.04 (may have slots added or not.  For space and performance considerations, many kinds of objects do not) 72 648.33 P
-0.27 (permit new slots to be added.  For example,) 72 628.33 P
5 F
-0.59 (Fixnums) 273.37 628.33 P
4 F
-0.27 ( are represented in the same space as a reference) 315.34 628.33 P
-0.18 (to an actor and there is really no place to put additional slots.  The entities that permit new slots to be) 72 608.33 P
(added are) 72 588.33 T
5 F
(Actors) 120.31 588.33 T
4 F
(,) 156.29 588.33 T
5 F
(Operations) 161.85 588.33 T
4 F
(, and) 221.82 588.33 T
5 F
(Metas) 247.55 588.33 T
4 F
(.  All others are not) 277.54 588.33 T
5 F
(extensible) 369.54 588.33 T
4 F
(.) 429.5 588.33 T
5 F
(\050lookup-obo \050meta) 72 563.33 T
2 F
(any) 179.94 563.33 T
5 F
(\051) 194.37 563.33 T
2 F
(any) 206.37 563.33 T
(key) 226.79 563.33 T
5 F
(\051) 240.11 563.33 T
6 F
(\336) 252.1 563.33 T
2 F
(any) 267.96 563.33 T
1 F
(primitive) 503.35 563.33 T
5 F
(\050get-obo \050meta) 72 553.33 T
2 F
(any) 161.95 553.33 T
5 F
(\051) 176.38 553.33 T
2 F
(any) 188.38 553.33 T
(key) 208.8 553.33 T
5 F
(\051) 222.12 553.33 T
6 F
(\336) 234.11 553.33 T
2 F
(any) 249.97 553.33 T
1 F
(primitive) 503.35 553.33 T
4 F
0.3 (The) 72 533.33 P
5 F
0.65 (lookup-obo) 92.85 533.33 P
4 F
0.3 ( operation asks the) 152.82 533.33 P
5 F
0.65 (\050meta) 244.73 533.33 P
7 F
0.3 (any) 281.36 533.33 P
5 F
0.65 (\051) 298.2 533.33 P
4 F
0.3 ( to lookup the) 304.19 533.33 P
7 F
0.3 (key) 371.3 533.33 P
4 F
0.3 ( on behalf of) 386.29 533.33 P
7 F
0.3 (any) 446.73 533.33 P
4 F
0.3 (.  This operation) 463.57 533.33 P
0.61 (performs) 72 513.33 P
5 F
1.32 (get-obo) 116.83 513.33 P
4 F
0.61 ( on) 158.81 513.33 P
7 F
0.61 (any) 176.69 513.33 P
4 F
0.61 ( and if the slot is defined among the object slots of) 193.53 513.33 P
7 F
0.61 (any) 433.9 513.33 P
4 F
0.61 ( then its binding is) 450.74 513.33 P
-0.6 (returned; otherwise, the process continues with the) 72 493.33 P
5 F
-1.29 (parent) 307.68 493.33 P
4 F
-0.6 ( of) 343.66 493.33 P
7 F
-0.6 (any) 356.35 493.33 P
4 F
-0.6 (.  If the entity passed as) 373.18 493.33 P
5 F
-1.29 (\050meta) 482.47 493.33 P
7 F
-0.6 (any) 517.16 493.33 P
5 F
-1.29 (\051) 534 493.33 P
4 F
(is not in fact) 72 473.33 T
7 F
(any) 132.35 473.33 T
4 F
(\325s meta then a) 149.19 473.33 T
5 F
(runtime-error) 216.95 473.33 T
4 F
( is signalled.) 294.91 473.33 T
5 F
(\050add-obo \050meta) 72 448.33 T
2 F
(any) 161.95 448.33 T
5 F
(\051) 176.38 448.33 T
2 F
(any) 188.38 448.33 T
(key) 208.8 448.33 T
(any) 228.11 448.33 T
5 F
(\325\051) 242.55 448.33 T
6 F
(\336) 260.54 448.33 T
2 F
(any) 276.4 448.33 T
1 F
(primitive) 503.35 448.33 T
4 F
-0.03 (This operation asks the meta of an entity to add a new object slot with key) 72 428.33 P
7 F
-0.03 (key) 417.92 428.33 P
4 F
-0.03 ( and value) 432.92 428.33 P
7 F
-0.03 (any) 483.74 428.33 P
5 F
-0.06 (\325) 500.58 428.33 P
4 F
-0.03 (.  If the) 506.58 428.33 P
-0.15 (meta is marked as) 72 408.33 P
5 F
-0.31 (extensible) 159.36 408.33 P
4 F
-0.15 ( a reference to) 219.33 408.33 P
7 F
-0.15 (any) 287.04 408.33 P
4 F
-0.15 ( is returned from the operation; otherwise, a) 303.88 408.33 P
5 F
-0.31 (runt-) 510.02 408.33 P
(ime-error) 72 388.33 T
4 F
( is signalled.) 125.97 388.33 T
5 F
(\050set-obo \050meta) 72 363.33 T
2 F
(any) 161.95 363.33 T
5 F
(\051) 176.38 363.33 T
2 F
(any) 188.38 363.33 T
(key) 208.8 363.33 T
(any) 228.11 363.33 T
5 F
(\325\051) 242.55 363.33 T
6 F
(\336) 260.54 363.33 T
2 F
(any) 276.4 363.33 T
1 F
(primitive) 503.35 363.33 T
4 F
0.11 (This operation permits any object slot of any entity to be altered by appealing to its meta object.  The) 72 343.33 P
(object being modified is returned as the result of) 72 323.33 T
5 F
(set-obo) 298.19 323.33 T
4 F
(.) 340.16 323.33 T
5 F
(\050contour \050meta) 72 298.33 T
2 F
(any) 161.95 298.33 T
5 F
(\051) 176.38 298.33 T
2 F
(any) 188.38 298.33 T
5 F
(\051) 202.81 298.33 T
6 F
(\336) 214.8 298.33 T
2 F
(tuple) 230.66 298.33 T
1 F
(primitive) 503.35 298.33 T
4 F
-0.1 (The) 72 278.33 P
5 F
-0.21 (contour) 92.45 278.33 P
4 F
-0.1 ( primitive returns a) 134.43 278.33 P
7 F
-0.1 (tuple) 228.07 278.33 P
4 F
-0.1 ( consisting of the pairs of keys and values for the object slots of) 251.2 278.33 P
7 F
(any) 72 258.33 T
4 F
(.) 88.84 258.33 T
5 F
(\050contour \050meta \325\050f x\051\051 \325\050f x\051\051) 108 233.33 T
6 F
(\336) 360 233.33 T
5 F
( [\325trgt \325f \325msg \325[x]]) 369.86 233.33 T
(\050keys \050meta) 72 213.33 T
2 F
(any) 143.96 213.33 T
5 F
(\051) 158.39 213.33 T
2 F
(any) 170.39 213.33 T
5 F
(\051) 184.82 213.33 T
6 F
(\336) 196.81 213.33 T
2 F
(tuple) 212.67 213.33 T
1 F
(primitive) 503.35 213.33 T
4 F
(The) 72 193.33 T
5 F
(keys) 92.55 193.33 T
4 F
( primitive returns a tuple of the keys defined on) 116.54 193.33 T
7 F
(any) 340.5 193.33 T
4 F
(.) 357.34 193.33 T
5 F
(\050keys \050meta \325\050f x\051\051 \325\050f x\051\051) 108 168.33 T
6 F
(\336) 360 168.33 T
5 F
( [\325trgt \325msg]) 369.86 168.33 T
3 12 Q
(9.2.) 72 147 T
(Mailboxes) 108 147 T
4 10 Q
-0.69 (The mailbox objects implement the communications interface of an entity.  The main function of a mail-) 72 128.33 P
0.2 (box is the buffering of incoming messages until they are accepted by the entity for processing.  There) 72 108.33 P
-0.48 (are three kinds of mailboxes provided in Rosette:) 72 88.33 P
5 F
-1.03 (EmptyMbox) 296.77 88.33 P
4 F
-0.48 (,) 350.74 88.33 P
5 F
-1.03 (LockedMbox) 355.82 88.33 P
4 F
-0.48 (, and) 415.79 88.33 P
5 F
-1.03 (QueueMbox) 440.56 88.33 P
4 F
-0.48 (.  If an en-) 494.53 88.33 P
558 585 562 595 R
V
FMENDPAGE
%%EndPage: "46" 45
%%Page: "45" 45
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(45) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 63 540 720 R
V
4 F
0 X
(There are primitive operations for accessing the actors bound to the meta slots of an entity:) 90 713.33 T
5 F
(\050parent) 72 688.33 T
2 F
(any) 119.97 688.33 T
5 F
(\051) 134.41 688.33 T
6 F
(\336) 146.4 688.33 T
2 F
(any) 162.26 688.33 T
1 F
(primitive) 503.35 688.33 T
5 F
(\050meta) 72 678.33 T
2 F
(any) 107.98 678.33 T
5 F
(\051) 122.41 678.33 T
6 F
(\336) 134.41 678.33 T
2 F
(meta) 150.27 678.33 T
1 F
(primitive) 503.35 678.33 T
5 F
(\050mbox) 72 668.33 T
2 F
(any) 107.98 668.33 T
5 F
(\051) 122.41 668.33 T
6 F
(\336) 134.41 668.33 T
2 F
(mbox) 150.27 668.33 T
1 F
(primitive) 503.35 668.33 T
4 F
0.29 (Each of these primitive operations is defined on every entity in the Rosette system.  There are corre-) 72 648.33 P
0.93 (sponding primitive operations that permit the bindings of the meta slots of an entity to be altered.) 72 628.33 P
0.49 (They are named by suffixing a colon \050) 72 608.33 P
5 F
1.06 (:) 248.33 608.33 P
4 F
0.49 (\051 to each of the above primitive names.  These operations are) 254.33 608.33 P
(used in bootstrapping the Rosette system.) 72 588.33 T
-0.31 (This remainder of this section will describe the) 90 563.33 P
5 F
-0.66 (meta) 307.08 563.33 P
4 F
-0.31 ( and) 331.07 563.33 P
5 F
-0.66 (mbox) 353.41 563.33 P
4 F
-0.31 ( objects.  The) 377.4 563.33 P
5 F
-0.66 (parent) 439.3 563.33 P
4 F
-0.31 ( objects where) 475.28 563.33 P
0.19 (discussed in section) 72 543.33 P
8 F
0.2 (8.5) 166.41 543.33 P
4 F
0.19 (.  This section will also describe the monitoring facilities and error operations) 180.66 543.33 P
(provided in Rosette.) 72 523.33 T
3 12 Q
(9.1.) 72 492 T
(Meta objects) 108 492 T
4 10 Q
-0.28 (The meta object describes the structure of an entity and implements the operations that access the ob-) 72 473.33 P
-0.49 (ject slots of an entity.  Each meta object contains at least three slots:) 72 453.33 P
5 F
-1.06 (\325map) 384.25 453.33 P
4 F
-0.49 (,) 408.24 453.33 P
5 F
-1.06 (\325ref-count) 413.3 453.33 P
4 F
-0.49 (, and) 473.27 453.33 P
5 F
-1.06 (\325exten-) 498.02 453.33 P
-0.26 (sible) 72 433.33 P
4 F
-0.12 (.  The) 101.98 433.33 P
5 F
-0.26 (map) 130.51 433.33 P
4 F
-0.12 ( slot contains a table that gives the correspondence between the keys defining the ob-) 148.5 433.33 P
0.62 (ject slots of an entity and the offset within the representation of the entity at which the slot occurs.) 72 413.33 P
-0.44 (Thus every entity is conceptually a contiguous chunk of storage which is big enough to hold a reference) 72 393.33 P
-0.05 (to the binding for each of its object slots as well as its three meta slots.  The keys are held in the meta) 72 373.33 P
-0.25 (object which is in general shared among all of the entities with the same description.  This means that) 72 353.33 P
-0.11 (the space required to maintain the mapping of keys to values need only occur once for all similar enti-) 72 333.33 P
-0.39 (ties and that the compiler can make use of the offset information to compile fast access to slots without) 72 313.33 P
-0.15 (requiring associative key lookup at runtime.  Thus, there are typically far fewer meta objects than en-) 72 293.33 P
-0.07 (tities in a system.  Further, the system starts off with a meta object that describes itself so there is no) 72 273.33 P
0.05 (infinite regress of meta objects.  Meta slots may not be added to any entity; however, object slots may) 72 253.33 P
-0.64 (be added to the meta object itself of any entity.  This permits information about an entity to be captured) 72 233.33 P
0.12 (in its corresponding meta object.  Most of the printing system is implemented in terms of methods on) 72 213.33 P
(the meta objects of the various entities in Rosette.) 72 193.33 T
0.24 (The) 72 168.33 P
5 F
0.52 (ref-count) 92.79 168.33 P
4 F
0.24 ( slot counts the \050maximum\051 number of objects described by the meta object.  If it is) 146.76 168.33 P
5 F
0.52 (0) 534 168.33 P
4 F
0.07 (then there are no objects described, if it is) 72 148.33 P
5 F
0.14 (1) 268.43 148.33 P
4 F
0.07 ( then the association between entity and meta object is 1-) 274.43 148.33 P
-0.49 (1, and if it is greater than) 72 128.33 P
5 F
-1.07 (2) 190.36 128.33 P
4 F
-0.49 ( then we say that the meta object is shared.  Adding slots to an entity whose) 196.36 128.33 P
-0.14 (meta object is shared among other entities requires that a new meta object be created for the entity to) 72 108.33 P
-0.15 (which a slot is being added.  The) 72 88.33 P
5 F
-0.33 (parent) 224.07 88.33 P
4 F
-0.15 ( of the new meta object is made to be the original meta object) 260.05 88.33 P
FMENDPAGE
%%EndPage: "45" 44
%%Page: "44" 44
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(44) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 63 540 720 R
V
3 12 Q
0 X
(9.) 72 712 T
(System Actors) 90 712 T
4 10 Q
-0.17 (The Rosette execution model [Agha et al. 1988] defines the resources that support an actor in terms of) 72 686.33 P
0.84 (parents, meta objects, and mailbox abstractions so that resource management decisions may be ex-) 72 666.33 P
0.47 (pressed at the level of individual application actors.  There are two major roles for resource abstrac-) 72 646.33 P
0.8 (tions.  The first is to provide the implementation of application actors, and the second is to provide) 72 626.33 P
0.12 (monitoring and control interfaces so that resource management policies may be programmed to mon-) 72 606.33 P
-0.18 (itor and control performance.  Many control and management abstractions may be expressed in terms) 72 586.33 P
-0.09 (of the execution model \321 for example, transactions and actor migration.  Further, monitoring and de-) 72 566.33 P
(bugging facilities in a system are programmed in terms of the execution model.) 72 546.33 T
0.17 (The structural model of an actor represents an actor in terms of other actors \050see Figure 2.\051.  The) 90 521.33 P
-0.09 (structure of an actor may be thought of as a set of slots, each of which is a pair consisting of a key and) 72 501.33 P
0.25 (a value.  There are conceptually two classes of slots associated with every actor: the \322meta\323 slots and) 72 481.33 P
-0.55 (the \322object\323 slots.  The object slots contain bindings for values \050including methods\051 that are components) 72 461.33 P
-0.16 (of the state and behavior of the kind of thing being modeled by an actor.  The meta slots contain refer-) 72 441.33 P
-0.49 (ences to other actors that implement an actor.  There are three meta slots defined for every actor:) 72 421.33 P
5 F
-1.05 (par-) 516.01 421.33 P
-1.22 (ent) 72 401.33 P
4 F
-0.56 (,) 89.99 401.33 P
5 F
-1.22 (meta) 94.98 401.33 P
4 F
-0.56 (, and) 118.97 401.33 P
5 F
-1.22 (mbox) 143.58 401.33 P
4 F
-0.56 (.  The actors bound to these slots are collectively termed) 167.57 401.33 P
7 F
-0.56 (resource actors) 422.73 401.33 P
4 F
-0.56 (.  Any com-) 490.24 401.33 P
-0.54 (bination of these resource actors may be built-in or not; however, there must be at least one set of prim-) 72 381.33 P
0.22 (itive resource actors that define a concrete implementation of actors in a system.  It is the possibility) 72 361.33 P
-0.15 (of defining new resource actors within the context of the execution model that makes the Rosette base) 72 341.33 P
(language extensible so that new forms of monitoring and control may be defined.) 72 321.33 T
72 63 540 720 C
72 63 540 315 C
72 63 540 315 R
7 X
0 K
V
164 179 236 233 R
V
1 H
0 Z
0 X
N
164 215 236 215 2 L
2 Z
N
164 197 236 197 2 L
N
317 260 389 287 R
4 X
V
0 Z
0 X
N
317 197 389 224 R
4 X
V
0 X
N
317 125 389 152 R
4 X
V
0 X
N
313 269.23 316.99 269 314.8 265.66 3 L
N
227 224 316.55 268.78 2 L
2 Z
N
313.54 208 317 206 313.54 204 3 L
0 Z
N
227 206 316.5 206 2 L
2 Z
N
314.16 143.56 315.99 140.01 312 140.19 3 L
0 Z
N
231 194 315.58 140.27 2 L
2 Z
N
0 10 Q
(parent) 177 219 T
(meta) 177 201 T
(mbox) 177 183 T
212 57 401 89 R
7 X
V
1 F
0 X
(Figure 2: Structural model of an actor) 231 82.33 T
9 F
(an actor) 153 244 T
99 99 522 297 R
0.5 H
0 Z
N
164 126 236 180 R
7 X
V
1 H
0 X
N
164 162 236 162 2 L
2 Z
N
164 144 236 144 2 L
N
6 12 Q
(\346) 152 212 T
(\347) 156.6 200 T
(\350) 161.21 188 T
(\346) 152 159 T
(\347) 156.6 147 T
(\350) 161.21 135 T
9 10 Q
(meta) 117 208 T
(slots) 117 198 T
(object) 117 153 T
(slots) 117 143 T
72 63 540 720 C
0 0 612 792 C
FMENDPAGE
%%EndPage: "44" 43
%%Page: "43" 43
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(43) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 54 540 720 R
V
3 12 Q
0 X
(8.6.) 72 712 T
(Operation objects) 108 712 T
4 10 Q
0.15 (Operations are typically defined in the) 72 693.33 P
5 F
0.33 (Global) 253.94 693.33 P
4 F
0.15 ( environment by the) 289.92 693.33 P
5 F
0.33 (defOprn) 386.59 693.33 P
4 F
0.15 ( and) 428.57 693.33 P
5 F
0.33 (defSync) 451.83 693.33 P
4 F
0.15 ( forms de-) 493.8 693.33 P
-0.13 (scribed in section) 72 673.33 P
8 F
-0.14 (6.2) 154.34 673.33 P
4 F
-0.13 (.  Anonymous operations may be created by the) 168.59 673.33 P
5 F
-0.28 (new) 388.43 673.33 P
4 F
-0.13 ( operation on) 406.42 673.33 P
5 F
-0.28 (Oprn) 469.33 673.33 P
4 F
-0.13 ( and) 493.32 673.33 P
5 F
-0.28 (Syn-) 516.01 673.33 P
-0.98 (cOprn) 72 653.33 P
4 F
-0.46 (.  Operation objects are specializations of) 101.98 653.33 P
5 F
-0.98 (Actor) 290.39 653.33 P
4 F
-0.46 ( and as such new slots and methods may be add-) 320.37 653.33 P
0.17 (ed; however, all operations come equipped initially with two slots :) 72 633.33 P
5 F
0.36 (\325id) 383.34 633.33 P
4 F
0.17 ( and) 401.33 633.33 P
5 F
0.36 (\325sync) 424.62 633.33 P
4 F
0.17 (.  The) 454.61 633.33 P
5 F
0.36 (id) 483.99 633.33 P
4 F
0.17 ( slot typi-) 495.98 633.33 P
-0.46 (cally holds a symbol that identifies the operation and the) 72 613.33 P
5 F
-1 (sync) 333.4 613.33 P
4 F
-0.46 ( slot holds  a boolean that if) 357.39 613.33 P
5 F
-1 (#t) 484.04 613.33 P
4 F
-0.46 ( indicates) 496.04 613.33 P
-0.23 (that the operation is a synchronous operation and otherwise indicates that it is an ordinary operation.) 72 593.33 P
-0.08 (When a synchronous operation is used with a target object or actor, then the process of looking up the) 72 573.33 P
-0.47 (operation and invoking the binding is performed without regard for whether the entity is locked or not.) 72 553.33 P
0.61 (Non-synchronous operations obey the basic actor semantics in that when sent to a locked entity the) 72 533.33 P
-0.25 (message is enqueued in the mailbox of the entity.  Synchronous operations are used to implement pro-) 72 513.33 P
(tocols that aid in debugging, browsing, and initialization.) 72 493.33 T
558 650 562 660 R
V
FMENDPAGE
%%EndPage: "43" 42
%%Page: "42" 42
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(42) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 63 540 720 R
V
3 12 Q
0 X
(8.3.) 72 712 T
(Methods) 108 712 T
4 10 Q
0.52 (A method object holds the message pattern and body that defines the actions taken in response to a) 72 693.33 P
0.35 (message received by an actor or object.  It is an unclosed procedure in that it does not carry an envi-) 72 673.33 P
-0.23 (ronment with it.  The environment in which a method runs is determined by the object or actor receiv-) 72 653.33 P
-0.48 (ing a message that invokes the method.  Method objects contain three slots:) 72 633.33 P
5 F
-1.04 (\325code) 417.43 633.33 P
4 F
-0.48 (,) 447.41 633.33 P
5 F
-1.04 (\325id) 452.48 633.33 P
4 F
-0.48 (, and) 470.47 633.33 P
5 F
-1.04 (\325source) 495.24 633.33 P
4 F
-0.48 (.) 537.22 633.33 P
0.13 (The) 72 613.33 P
5 F
0.28 (code) 92.68 613.33 P
4 F
0.13 ( slot contains a code object as described above.  The) 116.67 613.33 P
5 F
0.28 (id) 357.64 613.33 P
4 F
0.13 ( slot typically contains a symbol that) 369.64 613.33 P
-0.08 (corresponds to the operation or local identifier that is used to invoke the method, and the) 72 593.33 P
5 F
-0.17 (source) 484.66 593.33 P
4 F
-0.08 ( slot) 520.64 593.33 P
1.72 (holds the expression that was compiled to produce the method object.  The) 72 573.33 P
5 F
3.72 (source@) 439.99 573.33 P
4 F
1.72 (,) 481.97 573.33 P
5 F
3.72 (formals@) 489.25 573.33 P
4 F
1.72 (,) 537.22 573.33 P
5 F
(code@) 72 553.33 T
4 F
(, and) 101.98 553.33 T
5 F
(show-code) 127.72 553.33 T
4 F
( operations are defined on method objects \050see section) 181.69 553.33 T
8 F
(4.3.2) 431.56 553.33 T
4 F
(\051.) 454.33 553.33 T
3 12 Q
(8.4.) 72 522 T
(Procedure objects) 108 522 T
4 10 Q
0.51 (Procedure objects are similar to method objects but in addition they carry their own environment in) 72 503.33 P
-0.26 (which they run when they are sent a message.  The slots for a procedure object are:) 72 483.33 P
5 F
-0.56 (\325env) 454.66 483.33 P
4 F
-0.26 (,) 478.65 483.33 P
5 F
-0.56 (\325code) 483.95 483.33 P
4 F
-0.26 (,) 513.93 483.33 P
5 F
-0.56 (\325id) 519.23 483.33 P
4 F
-0.26 (,) 537.22 483.33 P
-0.5 (and) 72 463.33 P
5 F
-1.09 (\325source) 91.68 463.33 P
4 F
-0.5 (.  The) 133.65 463.33 P
5 F
-1.09 (env) 161.03 463.33 P
4 F
-0.5 ( slot holds the object that represents the environment over which the procedure) 179.02 463.33 P
-0.36 (was closed.  It is this environment that will be extended with the bindings defined by the template and) 72 443.33 P
-0.39 (pattern in the procedure object\325s code.  As with the method object, the operations) 72 423.33 P
5 F
-0.84 (source@) 442.1 423.33 P
4 F
-0.39 (,) 484.08 423.33 P
5 F
-0.84 (formals@) 489.25 423.33 P
4 F
-0.39 (,) 537.22 423.33 P
5 F
(code@) 72 403.33 T
4 F
(, and) 101.98 403.33 T
5 F
(show-code) 127.72 403.33 T
4 F
( are defined on procedure objects.) 181.69 403.33 T
3 12 Q
(8.5.) 72 372 T
(Shared Behavior and Multiple Inheritance objects) 108 372 T
4 10 Q
-0.03 (A shared behavior object is just an ordinary object \050or actor\051 that acts as a repository for methods and) 72 353.33 P
0.48 (values shared across a family of instances.  By convention in Rosette, actors used to hold shared be-) 72 333.33 P
0.95 (havior are identified as such and the defining forms such as) 72 313.33 P
5 F
2.04 (defActor) 361.34 313.33 P
4 F
0.95 ( and) 409.32 313.33 P
5 F
2.04 (defMethod) 434.17 313.33 P
4 F
0.95 ( depend on) 488.14 313.33 P
0.23 (these conventions.  Actors have a single meta slot, accessed via the) 72 293.33 P
5 F
0.5 (parent) 386.14 293.33 P
4 F
0.23 ( primitive operation, that) 422.12 293.33 P
0.02 (is used to support inheritance during the process of looking up a binding to an identifier or operation.) 72 273.33 P
-0.05 (Thus, single inheritance is accomplished simply by linking objects together via the) 72 253.33 P
5 F
-0.11 (parent) 454.93 253.33 P
4 F
-0.05 ( slot in the) 490.91 253.33 P
-0.38 (order that is desired.  The environment extensions that occur during procedure and method invocation) 72 233.33 P
-0.02 (just link more objects along the inheritance chain so that lexical environments and single inheritance) 72 213.33 P
-0.4 (are integrated in a single mechanism.  In order to support multiple inheritance, a specialization of) 72 193.33 P
5 F
-0.87 (Ac-) 522.01 193.33 P
-1.18 (tor) 72 173.33 P
4 F
-0.55 ( is included in Rosette.  The prototype in the) 89.99 173.33 P
5 F
-1.18 (Global) 292.2 173.33 P
4 F
-0.55 ( environment is named) 328.18 173.33 P
5 F
-1.18 (MIObject) 435.19 173.33 P
4 F
-0.55 ( for Multiple) 483.17 173.33 P
-0.57 (Inheritance Object.  While) 72 153.33 P
5 F
-1.22 (MIObject) 194.29 153.33 P
4 F
-0.57 (s may be extended with additional slots, they each come equipped) 242.27 153.33 P
0.15 (with a slot named) 72 133.33 P
5 F
0.33 (\325cpl) 158.15 133.33 P
4 F
0.15 ( for class precedence list.  This is a tuple of \050shared behavior\051 objects that are) 182.13 133.33 P
0.32 (searched in linear order for the desired key.  If the) 72 113.33 P
5 F
0.69 (cpl) 311.15 113.33 P
4 F
0.32 ( is empty, the) 329.14 113.33 P
5 F
0.69 (MIObject) 395.96 113.33 P
4 F
0.32 ( returns) 443.94 113.33 P
5 F
0.69 (#absent) 484.74 113.33 P
4 F
0.32 ( as) 526.72 113.33 P
0.05 (the result of the lookup operation.  If the) 72 93.33 P
5 F
0.11 (cpl) 262.91 93.33 P
4 F
0.05 ( is not empty but the key is not present in any of the ob-) 280.9 93.33 P
(jects of the) 72 73.33 T
5 F
(cpl) 124.56 73.33 T
4 F
( then the search continues with the) 142.55 73.33 T
5 F
(parent) 308.58 73.33 T
4 F
( of the last object in) 344.56 73.33 T
5 F
(cpl) 437.86 73.33 T
4 F
(.) 455.85 73.33 T
558 330 562 340 R
V
558 290 562 300 R
V
558 170 562 200 R
V
FMENDPAGE
%%EndPage: "42" 41
%%Page: "41" 41
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(41) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
4 F
0 X
0.88 (The let and letrec expression prototypes are named respectively:) 72 713.33 P
5 F
1.89 (LetExpr) 379.93 713.33 P
4 F
0.88 ( and) 421.91 713.33 P
5 F
1.89 (LetrecExpr) 446.62 713.33 P
4 F
0.88 (.  Each) 506.59 713.33 P
0.04 (kind of expression objects has two slots:) 72 693.33 P
5 F
0.09 (\325bindings) 258.5 693.33 P
4 F
0.04 ( and) 312.47 693.33 P
5 F
0.09 (\325body) 335.51 693.33 P
4 F
0.04 (.  The) 365.49 693.33 P
5 F
0.09 (bindings) 394.5 693.33 P
4 F
0.04 ( is a tuple expression) 442.47 693.33 P
(consisting of tuple expressions representing each of the bindings.) 72 673.33 T
-0.55 (Prototypes for procedure and method expressions are named) 72 648.33 P
5 F
-1.18 (ProcExpr) 350.04 648.33 P
4 F
-0.55 ( and) 398.02 648.33 P
5 F
-1.18 (MethodExpr) 419.88 648.33 P
4 F
-0.55 ( respectively.) 479.84 648.33 P
0.01 (Each kind of expression object has the following slots:) 72 628.33 P
5 F
0.03 (\325id) 322.92 628.33 P
4 F
0.01 (,) 340.91 628.33 P
5 F
0.03 (\325formals) 346.48 628.33 P
4 F
0.01 (, and) 394.45 628.33 P
5 F
0.03 (\325body) 420.21 628.33 P
4 F
0.01 (.  The) 450.19 628.33 P
5 F
0.03 (formals) 479.11 628.33 P
4 F
0.01 ( is a) 521.09 628.33 P
(tuple expression representing the pattern of messages that are accepted.) 72 608.33 T
0.1 (For each of the label, goto, and set! expressions, there are prototypes named:) 72 583.33 P
5 F
0.22 (LabelExpr) 429.62 583.33 P
4 F
0.1 (,) 483.59 583.33 P
5 F
0.22 (GotoExpr) 489.25 583.33 P
4 F
0.1 (,) 537.22 583.33 P
-0.25 (and) 72 563.33 P
5 F
-0.55 (SetExpr) 91.93 563.33 P
4 F
-0.25 (.  The slots for a label expression are:) 133.9 563.33 P
5 F
-0.55 (\325label) 306.01 563.33 P
4 F
-0.25 ( and) 341.99 563.33 P
5 F
-0.55 (\325body) 364.44 563.33 P
4 F
-0.25 (.  The goto expression has a sin-) 394.42 563.33 P
0.28 (gle) 72 543.33 P
5 F
0.6 (\325label) 88.57 543.33 P
4 F
0.28 ( slot and set! expression has a) 124.55 543.33 P
5 F
0.6 (\325trgt) 267.38 543.33 P
4 F
0.28 ( slot for the lexical binding to be set and a) 297.36 543.33 P
5 F
0.6 (\325val) 496.29 543.33 P
4 F
0.28 ( slot) 520.28 543.33 P
(to hold the expression that will be evaluated to produce the value for the set! expression.) 72 523.33 T
3 12 Q
(8.2.) 72 492 T
(Code, Templates and Patterns) 108 492 T
4 10 Q
0.31 (Code objects result from the) 72 473.33 P
5 F
0.68 (compile) 205.72 473.33 P
4 F
0.31 ( operation on expressions.  Typically, a code object corresponds) 247.69 473.33 P
-0.46 (to an expression entered to the Rosette listener or a procedure or method expression.  Code objects con-) 72 453.33 P
0.29 (tain a) 72 433.33 P
5 F
0.62 (\325codevec) 102.39 433.33 P
4 F
0.29 ( slot and a) 150.36 433.33 P
5 F
0.62 (\325litvec) 202.25 433.33 P
4 F
0.29 ( slot.  The) 244.22 433.33 P
5 F
0.62 (codevec) 293.7 433.33 P
4 F
0.29 ( is a sequence of byte-codes and the) 335.68 433.33 P
5 F
0.62 (litvec) 504.02 433.33 P
4 F
0.3 (is a tuple of literals referred to from the) 72 413.33 P
5 F
0.65 (codevec) 264.19 413.33 P
4 F
0.3 (.  In the case of procedure and method objects, the) 306.17 413.33 P
5 F
-1.34 (litvec) 72 393.33 P
4 F
-0.62 ( always contains a template object.  Templates control the destructuring and binding of formals) 107.98 393.33 P
0.63 (according to the pattern object that is contained in a template object.  Pattern objects represent the) 72 373.33 P
0.75 (patterns of messages that are accepted when procedures and methods are invoked.  Pattern objects) 72 353.33 P
-0.37 (have an) 72 333.33 P
5 F
-0.79 (\325expr) 110.52 333.33 P
4 F
-0.37 ( slot that holds a tuple expression representing the pattern.  The prototypes for the var-) 140.5 333.33 P
(ious kinds of patterns in the) 72 313.33 T
5 F
(Global) 204.91 313.33 T
4 F
( environment and the bindings for their) 240.89 313.33 T
5 F
(expr) 426.9 313.33 T
4 F
( slot are:) 450.89 313.33 T
5 F
(IdVecPattern) 108 288.33 T
6 F
(\336) 360 288.33 T
5 F
( \325[x]) 369.86 288.33 T
(IdAmperRestPattern) 108 278.33 T
6 F
(\336) 360 278.33 T
5 F
( \325[& r]) 369.86 278.33 T
(ComplexPattern) 108 268.33 T
6 F
(\336) 360 268.33 T
5 F
( \325[[a b] c]) 369.86 268.33 T
4 F
0.64 (Code, template and pattern objects are created by the) 72 248.33 P
5 F
1.39 (compile) 328.05 248.33 P
4 F
0.64 ( operation on procedure and method) 370.03 248.33 P
(expression objects.  The operations) 72 228.33 T
5 F
(source@) 235.44 228.33 T
4 F
(,) 277.42 228.33 T
5 F
(formals@) 282.97 228.33 T
4 F
(, and) 330.95 228.33 T
5 F
(show-code) 356.68 228.33 T
4 F
( are defined on code objects.) 410.65 228.33 T
5 F
(\050run) 72 200.67 T
2 F
(code) 101.98 200.67 T
5 F
( &) 120.85 200.67 T
2 F
(monitor) 138.84 200.67 T
5 F
(\051) 170.5 200.67 T
6 F
(\336) 179.99 200.67 T
2 F
(any) 195.85 200.67 T
1 F
(primitive) 503.35 200.67 T
4 F
-0.34 (The) 72 179.33 P
5 F
-0.72 (run) 92.21 179.33 P
4 F
-0.34 ( primitive causes the virtual machine to execute the) 110.2 179.33 P
7 F
-0.34 (code) 349.85 179.33 P
4 F
-0.34 (.  An optional) 369.83 179.33 P
7 F
-0.34 (monitor) 433.28 179.33 P
4 F
-0.34 ( may be provid-) 469.55 179.33 P
0.68 (ed that will accumulate statistics on the execution of the) 72 159.33 P
7 F
0.68 (code) 342.39 159.33 P
4 F
0.68 (.  Monitors are discussed in section) 362.37 159.33 P
8 F
0.7 (9) 531.48 159.33 P
4 F
0.68 (.) 537.22 159.33 P
(The result of the) 72 139.33 T
5 F
(run) 151.41 139.33 T
4 F
( request is the result of executing the) 169.4 139.33 T
7 F
(code) 343.94 139.33 T
4 F
(.) 363.92 139.33 T
FMENDPAGE
%%EndPage: "41" 40
%%Page: "40" 40
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(40) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(\050new* TupleExpr) 72 710.67 T
2 F
(sequence_of_expressions) 167.95 710.67 T
5 F
(\051) 268.98 710.67 T
6 F
(\336) 278.48 710.67 T
2 F
(tuple_expression) 294.34 710.67 T
1 F
(operation) 502.25 710.67 T
4 F
(The) 72 689.33 T
5 F
(new) 92.55 689.33 T
4 F
(* operation creates tuple expressions from their constituent expressions.) 110.54 689.33 T
5 F
(\050->tuple) 72 661.67 T
2 F
(tuple_expression) 125.97 661.67 T
5 F
(\051) 193.7 661.67 T
6 F
(\336) 203.2 661.67 T
2 F
(tuple_of_expressions) 219.06 661.67 T
1 F
(operation) 502.25 661.67 T
4 F
0.11 (The) 72 640.33 P
5 F
0.24 (->tuple) 92.66 640.33 P
4 F
0.11 ( of a tuple expression is the tuple of expressions preceding the) 134.63 640.33 P
5 F
0.24 (&) 424.69 640.33 P
4 F
0.11 ( \050if any\051 in the tuple ex-) 430.69 640.33 P
(pression.) 72 620.33 T
5 F
(\050->tuple \325[a \050+ 1 b\051]\051) 108 600.33 T
6 F
(\336) 360 600.33 T
5 F
( [\325a \325\050+ 1 b\051]) 369.86 600.33 T
(\050->tuple \325[& \050foo 3\051]\051) 108 590.33 T
6 F
(\336) 360 590.33 T
5 F
( []) 369.86 590.33 T
(\050->tuple \325[]\051) 108 580.33 T
6 F
(\336) 360 580.33 T
5 F
( []) 369.86 580.33 T
(\050split) 72 557.67 T
2 F
(tupleExpr) 113.98 557.67 T
(number) 159.39 557.67 T
5 F
(\051) 189.93 557.67 T
6 F
(\336) 199.42 557.67 T
5 F
( [) 209.29 557.67 T
2 F
(expr) 221.28 557.67 T
6 F
(\274) 241.54 557.67 T
2 F
(tupleExpr) 257.53 557.67 T
5 F
(]) 296.95 557.67 T
1 F
(operation) 502.25 557.67 T
4 F
-0.28 (The) 72 536.33 P
5 F
-0.6 (split) 92.27 536.33 P
4 F
-0.28 ( operation returns a tuple consisting of the first) 122.25 536.33 P
7 F
-0.28 (number) 341.87 536.33 P
4 F
-0.28 ( sub-expressions of) 377.4 536.33 P
7 F
-0.28 (tupleExpr) 466.52 536.33 P
4 F
-0.28 ( and a) 512.04 536.33 P
(final element consisting of the remainder of the) 72 516.33 T
7 F
(tupleExpr) 293.93 516.33 T
4 F
(.) 339.44 516.33 T
5 F
(\050split \325[a b c & r] 1\051) 108 496.33 T
6 F
(\336) 360 496.33 T
5 F
( \325[\325a \325[b c & r]]) 369.86 496.33 T
(\050size) 72 473.67 T
2 F
(tupleExpr) 107.98 473.67 T
5 F
(\051) 147.4 473.67 T
6 F
(\336) 156.89 473.67 T
2 F
(number) 172.76 473.67 T
1 F
(operation) 502.25 473.67 T
5 F
(\050nth) 72 459.67 T
2 F
(tupleExpr) 101.98 459.67 T
(number) 147.4 459.67 T
5 F
(\051) 177.93 459.67 T
6 F
(\336) 187.43 459.67 T
2 F
(expression) 203.29 459.67 T
1 F
(operation) 502.25 459.67 T
5 F
(\050sub-obj) 72 445.67 T
2 F
(tupleExpr) 125.97 445.67 T
(number) 171.38 445.67 T
(number) 207.91 445.67 T
5 F
(\051) 238.45 445.67 T
6 F
(\336) 247.94 445.67 T
2 F
(tuple_expression) 263.8 445.67 T
1 F
(operation) 502.25 445.67 T
4 F
-0.17 (The) 72 424.33 P
5 F
-0.37 (size) 92.38 424.33 P
4 F
-0.17 (,) 116.36 424.33 P
5 F
-0.37 (nth) 121.75 424.33 P
4 F
-0.17 (, and) 139.74 424.33 P
5 F
-0.37 (sub-obj) 165.13 424.33 P
4 F
-0.17 ( operations are defined on the prefixes of tuple expressions.  The) 207.11 424.33 P
5 F
-0.37 (size) 505.08 424.33 P
4 F
-0.17 ( of) 529.07 424.33 P
0.25 (a tuple expression is the size of the prefix of the expression.  The use of the) 72 404.33 P
5 F
0.53 (nth) 424.51 404.33 P
4 F
0.25 ( and) 442.5 404.33 P
5 F
0.53 (sub-obj) 465.95 404.33 P
4 F
0.25 ( opera-) 507.92 404.33 P
(tions coincides with that for tuples \050section) 72 384.33 T
8 F
(7.6) 273.01 384.33 T
4 F
(\051.) 287.26 384.33 T
5 F
(\050define m1 \325[\050+ 1 2\051 \050* 3 4\051 \050- 5 6\051]\051) 108 359.33 T
(\050define m2 \325[\050+ 7 8\051 & m1]) 108 349.33 T
(\050size m1\051) 108 336.67 T
6 14 Q
(\272) 167.97 336.67 T
5 10 Q
( \050size \050->tuple m1\051\051) 175.65 336.67 T
6 F
(\336) 360 336.67 T
5 F
( 3) 369.86 336.67 T
(\050size m2\051) 108 322.67 T
6 14 Q
(\272) 167.97 322.67 T
5 10 Q
( \050size \050->tuple m2\051\051) 175.65 322.67 T
6 F
(\336) 360 322.67 T
5 F
( 1) 369.86 322.67 T
(\050nth m1 1\051) 108 311.33 T
6 F
(\336) 360 311.33 T
5 F
( \325\050* 3 4\051) 369.86 311.33 T
(\050nth m2 1\051) 108 301.33 T
6 F
(\336) 360 301.33 T
10 F
(runtime-error) 375.86 301.33 T
5 F
(\050sub-obj m1 1 2\051) 108 291.33 T
6 F
(\336) 360 291.33 T
5 F
( \325[\050* 3 4\051 \050- 5 6\051]) 369.86 291.33 T
(\050sub-obj m2 0 1\051) 108 281.33 T
6 F
(\336) 360 281.33 T
5 F
( \325[\050+ 7 8\051]) 369.86 281.33 T
3 F
(8.1.4.) 72 261.34 T
(Other expression objects) 108 261.34 T
4 F
0.17 (The prototype representing quote expressions is named) 72 236.34 P
5 F
0.37 (QuoteExpr) 331.57 236.34 P
4 F
0.17 (.  A quote expression has a single) 385.54 236.34 P
(slot named) 72 216.34 T
5 F
(\325expr) 125.5 216.34 T
4 F
( that holds the expression being quoted.) 155.48 216.34 T
0.96 (The prototype representing free expressions is named) 72 191.34 P
5 F
2.07 (FreeExpr) 329.31 191.34 P
4 F
0.96 (.  Free expressions have two slots:) 377.28 191.34 P
5 F
(\325id-list) 72 171.34 T
4 F
( and) 119.97 171.34 T
5 F
(\325body) 142.93 171.34 T
4 F
(.  The) 172.91 171.34 T
5 F
(id-list) 201.8 171.34 T
4 F
( is a tuple expression consisting solely of symbols.) 243.78 171.34 T
0.26 (The prototype if expression is named) 72 146.34 P
5 F
0.56 (IfExpr) 246.62 146.34 P
4 F
0.26 (.  If expressions have three slots:) 282.6 146.34 P
5 F
0.56 (\325condition) 438.24 146.34 P
4 F
0.26 (,) 498.2 146.34 P
5 F
0.56 (\325then-) 504.02 146.34 P
-0.77 (branch) 72 126.34 P
4 F
-0.35 (, and) 107.98 126.34 P
5 F
-0.77 (\325else-branch) 133.01 126.34 P
4 F
-0.35 (.  The) 204.97 126.34 P
5 F
-0.77 (else-branch) 232.79 126.34 P
4 F
-0.35 ( may be filled with the) 298.75 126.34 P
5 F
-0.77 (EmptyExpr) 403.07 126.34 P
4 F
-0.35 ( for one-armed ifs.) 457.04 126.34 P
FMENDPAGE
%%EndPage: "40" 39
%%Page: "39" 39
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(39) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(\050new*) 72 710.67 T
2 F
(block_or_seqExpr) 107.98 710.67 T
(sequence_of_expressions) 187.26 710.67 T
5 F
(\051) 288.29 710.67 T
6 F
(\336) 297.79 710.67 T
2 F
(block) 313.65 710.67 T
1 F
(operation) 502.25 710.67 T
4 F
0.43 (The) 72 689.33 P
5 F
0.94 (new*) 92.98 689.33 P
4 F
0.43 ( operation creates a block or sequential expression from its constituents, and is convenient) 116.97 689.33 P
(when the constituent expressions are not already in a tuple.) 72 669.33 T
5 F
(\050size) 72 641.67 T
2 F
(block) 107.98 641.67 T
6 F
(_) 129.63 641.67 T
2 F
(expression) 134.63 641.67 T
5 F
(\051) 177.37 641.67 T
6 F
(\336) 186.87 641.67 T
2 F
(number) 202.73 641.67 T
1 F
(operation) 502.25 641.67 T
5 F
(\050nth) 72 627.67 T
2 F
(block) 101.98 627.67 T
1 F
(_) 123.63 627.67 T
2 F
(expression) 128.63 627.67 T
(number) 177.37 627.67 T
5 F
(\051) 207.9 627.67 T
6 F
(\336) 217.4 627.67 T
2 F
(expression) 233.26 627.67 T
1 F
(operation) 502.25 627.67 T
5 F
(\050sub-obj) 72 613.67 T
2 F
(block_expression) 125.97 613.67 T
(number) 201.36 613.67 T
(number) 237.89 613.67 T
5 F
(\051) 268.42 613.67 T
6 F
(\336) 277.92 613.67 T
2 F
(block_expression) 293.78 613.67 T
1 F
(operation) 502.25 613.67 T
4 F
-0.21 (The) 72 592.33 P
5 F
-0.45 (size) 92.34 592.33 P
4 F
-0.21 (,) 116.33 592.33 P
5 F
-0.45 (nth) 121.68 592.33 P
4 F
-0.21 (, and) 139.67 592.33 P
5 F
-0.45 (sub-obj) 164.99 592.33 P
4 F
-0.21 ( operations are defined on these two kinds of expressions.  The use of the) 206.96 592.33 P
5 F
(nth) 72 572.33 T
4 F
( and) 89.99 572.33 T
5 F
(sub-obj) 112.95 572.33 T
4 F
( operations coincides with that for tuples \050section) 154.92 572.33 T
8 F
(7.6) 384.44 572.33 T
4 F
(\051.) 398.69 572.33 T
5 F
(\050define b \325\050block \050+ 1 2\051 \050* 3 4\051 \050- 5 6\051\051\051) 108 547.33 T
(\050size b\051) 108 537.33 T
6 F
(\336) 360 537.33 T
5 F
( 3) 369.86 537.33 T
(\050nth b 1\051) 108 527.33 T
6 F
(\336) 360 527.33 T
5 F
( \325\050* 3 4\051) 369.86 527.33 T
(\050sub-obj b 1 2\051) 108 517.33 T
6 F
(\336) 360 517.33 T
5 F
( \325\050block \050* 3 4\051 \050- 5 6\051\051) 369.86 517.33 T
3 F
(8.1.2.) 72 497.33 T
(Communication expression objects) 108 497.33 T
4 F
0.17 (There are two kinds of communication expressions:) 72 472.33 P
5 F
0.37 (RequestExpr) 312.52 472.33 P
4 F
0.17 (, and) 378.48 472.33 P
5 F
0.37 (SendExpr) 404.55 472.33 P
4 F
0.17 (.  Each of these ex-) 452.53 472.33 P
-0.34 (pression objects has two fields:) 72 452.33 P
5 F
-0.75 (\325trgt) 215.03 452.33 P
4 F
-0.34 ( and) 245.01 452.33 P
5 F
-0.75 (\325msg) 267.28 452.33 P
4 F
-0.34 (.  The) 291.26 452.33 P
5 F
-0.75 (msg) 319.11 452.33 P
4 F
-0.34 ( is typically a tuple expression object, a sym-) 337.1 452.33 P
(bol, or a request expression object.) 72 432.33 T
5 F
(\050new*) 72 404.67 T
2 F
(request_or_sendExpr) 107.98 404.67 T
(expression) 200.03 404.67 T
(sequence_of_expressions) 248.77 404.67 T
5 F
(\051) 349.81 404.67 T
6 F
(\336) 359.3 404.67 T
2 F
(request_expression) 375.16 404.67 T
1 F
(operation) 502.25 404.67 T
4 F
-0.32 (The) 72 383.33 P
5 F
-0.7 (new*) 92.22 383.33 P
4 F
-0.32 ( operation creates the corresponding kind of communication expression from its components.) 116.21 383.33 P
5 F
(\050new* RequestExpr \325+ \3251 \3252\051) 108 358.33 T
6 F
(\336) 360 358.33 T
5 F
( \325\050+ 1 2\051) 369.86 358.33 T
(\050new* SendExpr \325foo \325bar \325baz\051) 108 348.33 T
6 F
(\336) 360 348.33 T
5 F
( \325\050send foo bar baz\051) 369.86 348.33 T
(\050split) 72 328.33 T
2 F
(requestExpr) 113.98 328.33 T
(number) 168.83 328.33 T
5 F
(\051) 199.36 328.33 T
6 F
(\336) 211.35 328.33 T
5 F
( [) 221.22 328.33 T
2 F
(expr) 233.21 328.33 T
6 F
(\274) 253.47 328.33 T
2 F
(tupleExpr) 269.46 328.33 T
5 F
(]) 308.88 328.33 T
1 F
(operation) 502.25 328.33 T
4 F
-0.38 (The) 72 308.33 P
5 F
-0.81 (split) 92.17 308.33 P
4 F
-0.38 ( operation is useful in write syntax expanders.  The operation returns a tuple consisting the) 122.15 308.33 P
-0.49 (first) 72 288.33 P
7 F
-0.49 (number) 93.72 288.33 P
4 F
-0.49 (+1 elements of which are the) 129.25 288.33 P
5 F
-1.05 (trgt) 262.14 288.33 P
4 F
-0.49 ( of the) 286.13 288.33 P
7 F
-0.49 (requestExpr) 316.32 288.33 P
4 F
-0.49 ( and the first) 371.64 288.33 P
7 F
-0.49 (number) 432.63 288.33 P
4 F
-0.49 ( elements of the) 468.16 288.33 P
5 F
-0.78 (msg) 72 268.33 P
4 F
-0.36 (.  The last element of the result tuple is the) 89.99 268.33 P
7 F
-0.36 (tupleExpr) 288.54 268.33 P
4 F
-0.36 ( remaining in the) 334.06 268.33 P
5 F
-0.78 (msg) 415.73 268.33 P
4 F
-0.36 ( after removing its first) 433.72 268.33 P
7 F
(number) 72 248.33 T
4 F
( elements.) 107.53 248.33 T
5 F
(\050split \325\050f a b c & r\051 1\051) 108 223.33 T
6 F
(\336) 360 223.33 T
5 F
( \325[\325f \325a \325[b c & r]]) 369.86 223.33 T
3 F
(8.1.3.) 72 203.33 T
(Tuple expression objects) 108 203.33 T
4 F
-0.27 (The prototypical) 72 178.34 P
5 F
-0.57 (TupleExpr) 150.13 178.34 P
4 F
-0.27 ( represents expressions that when evaluated produce a tuple.  A tuple ex-) 204.1 178.34 P
0.6 (pression can be considered to consist of a prefix and an expression for the rest of the tuple that will) 72 158.34 P
-0.08 (result when the expression is evaluated.  The accessor operations on tuples are defined directly on tu-) 72 138.34 P
0.6 (ple expressions to facilitate program transformations.  These operations are defined on the prefix of) 72 118.34 P
(the expression.) 72 98.34 T
FMENDPAGE
%%EndPage: "39" 38
%%Page: "38" 38
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(38) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 12 Q
0 X
(8.) 72 712 T
(Program Representation Objects) 90 712 T
4 10 Q
0.36 (This section discusses the operations available on the objects that are used to represent Rosette pro-) 72 686.33 P
-0.64 (grams.  These are expressions, patterns, methods, procedures, shared behavior objects, and operations.) 72 666.33 P
3 12 Q
(8.1.) 72 635 T
(Expression objects) 108 635 T
4 10 Q
0.16 (As discussed in previous sections, there are distinct kinds of objects for each of the different basic ex-) 72 616.33 P
0.9 (pression forms.  This is how programs are represented as data to other Rosette programs.  Strictly) 72 596.33 P
-0.57 (speaking,) 72 576.33 P
5 F
-1.23 (Symbol) 118.45 576.33 P
4 F
-0.57 (s should be considered as identifier expression objects, but they are treated separate-) 154.43 576.33 P
(ly since they have other uses.) 72 556.33 T
5 F
(\050expand) 72 531.33 T
2 F
(expr) 125.97 531.33 T
5 F
(\051) 143.73 531.33 T
6 F
(\336) 155.72 531.33 T
2 F
(expr) 171.59 531.33 T
5 F
(\325) 189.35 531.33 T
1 F
(operation) 502.25 531.33 T
5 F
(\050compile) 72 521.33 T
2 F
(expr) 125.97 521.33 T
5 F
( &) 143.73 521.33 T
2 F
(any) 161.72 521.33 T
5 F
(\051) 176.15 521.33 T
6 F
(\336) 188.15 521.33 T
2 F
(code) 204.01 521.33 T
1 F
(operation) 502.25 521.33 T
4 F
-0.24 (All expressions \050including) 72 501.33 P
5 F
-0.51 (Symbol) 193.45 501.33 P
4 F
-0.24 (s\051 may be) 229.43 501.33 P
5 F
-0.51 (expand) 275.37 501.33 P
4 F
-0.24 (ed and) 311.36 501.33 P
5 F
-0.51 (compile) 344.58 501.33 P
4 F
-0.24 (d.  The) 386.55 501.33 P
5 F
-0.51 (expand) 420.47 501.33 P
4 F
-0.24 ( operation returns) 456.45 501.33 P
(the result of syntax expansion on) 72 481.33 T
7 F
(expr) 227.85 481.33 T
4 F
( as) 247.46 481.33 T
7 F
(expr) 263.2 481.33 T
5 F
(\325) 282.81 481.33 T
4 F
( \050see section) 288.81 481.33 T
8 F
(10) 347.3 481.33 T
4 F
(\051.) 358.77 481.33 T
5 F
(\050expand \325\050and \050f x\051 \050g y\051\051\051) 108 456.33 T
6 F
(\336) 360 456.33 T
5 F
( \325\050if \050f x\051 \050g y\051 #f\051) 369.86 456.33 T
4 F
-0.5 (The) 72 436.33 P
5 F
-1.09 (compile) 92.05 436.33 P
4 F
-0.5 ( operation returns a) 134.02 436.33 P
7 F
-0.5 (code) 227.15 436.33 P
4 F
-0.5 ( object that may be) 247.13 436.33 P
5 F
-1.09 (run) 335.14 436.33 P
4 F
-0.5 ( to obtain the effect and value of the) 353.13 436.33 P
7 F
-0.5 (expr) 517.61 436.33 P
4 F
-0.5 (.) 537.22 436.33 P
0.4 (The) 72 416.33 P
7 F
0.4 (expr) 92.94 416.33 P
4 F
0.4 ( may be directed to) 112.55 416.33 P
5 F
0.85 (compile) 205.05 416.33 P
4 F
0.4 ( itself with respect to an arbitrary entity.  This allows any free) 247.03 416.33 P
(variables such as references to slots of an object to be resolved at compile time.) 72 396.33 T
5 F
(\050new) 72 371.33 T
2 F
(expr-object) 101.98 371.33 T
(args) 153.49 371.33 T
5 F
(\051) 171.26 371.33 T
1 F
(operation) 502.25 371.33 T
4 F
0.3 (Each of the different kinds of expressions can be created via the) 72 351.33 P
5 F
0.64 (new) 372.81 351.33 P
4 F
0.3 ( operation by giving an instance) 390.8 351.33 P
0.24 (of the kind of expression that is to be created and the) 72 331.33 P
7 F
0.24 (args) 322.97 331.33 P
4 F
0.24 ( necessary to fill the slots of the particular) 342.95 331.33 P
(kind of expression:) 72 311.33 T
5 F
(\050new RequestExpr \325a-trgt \325msg\051) 108 286.33 T
6 F
(\336) 360 286.33 T
5 F
( \325\050a-trgt & msg\051) 369.86 286.33 T
(\050new BlockExpr [\325\050+ 1 2\051 \325\050update\051]) 108 276.33 T
6 F
(\336) 360 276.33 T
5 F
( \325\050block \050+ 1 2\051 \050update\051\051) 369.86 276.33 T
4 F
-0.14 (The remainder of this section presents information specific to each of the different kinds of expression) 72 256.33 P
-0.01 (objects.  In particular, the values that need to be provided in the) 72 236.33 P
5 F
-0.02 (new) 371.57 236.33 P
4 F
-0.01 ( operation are detailed.  Also the) 389.56 236.33 P
0.23 (names of their slots are given so that they may be referred to in methods that extend the behavior of) 72 216.33 P
(expression objects.) 72 196.33 T
3 F
(8.1.1.) 72 166.33 T
(Block and Seq expression objects) 108 166.33 T
4 F
0.23 (The prototypical block expression is named) 72 141.33 P
5 F
0.49 (BlockExpr) 275.31 141.33 P
4 F
0.23 ( and the prototypical sequential expression is) 329.28 141.33 P
0.12 (named) 72 121.33 P
5 F
0.25 (SeqExpr) 106.18 121.33 P
4 F
0.12 (.  Each block or sequential expression has a slot which is a tuple of expressions.  The) 148.16 121.33 P
(name of this slot is) 72 101.33 T
5 F
(\325sub-exprs) 161.97 101.33 T
4 F
(.  Thus, a single tuple of expressions is needed when using) 221.94 101.33 T
5 F
(new) 493.86 101.33 T
4 F
(.) 511.85 101.33 T
FMENDPAGE
%%EndPage: "38" 37
%%Page: "37" 37
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(37) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
0.16 (ment has been visited.  Usually, the) 72 713.33 P
7 F
0.16 (proc) 241.93 713.33 P
4 F
0.16 ( performs some actions for effect, such as displaying the ele-) 261.54 713.33 P
(ment on a stream:) 72 693.33 T
5 F
(\050walk [1 2 3 4] \050proc [i x] \050print x #\134 \051\051\051) 108 668.33 T
2 F
(prints) 371.86 668.33 T
5 F
(1 2 3 4) 108 648.33 T
3 12 Q
(7.7.) 72 627 T
(Symbols) 108 627 T
4 10 Q
-0.45 (Symbols are atomic objects that have an attribute called the name of the symbol.  They are objects that) 72 608.33 P
-0.13 (represent expressions consisting solely of an identifier.  Two symbols are identical \050) 72 588.33 P
5 F
-0.28 (same?) 455.25 588.33 P
4 F
-0.13 (\051 if and only) 485.23 588.33 P
-0.21 (if their names are spelled the same way \050including case\051.  This is exactly the property needed to repre-) 72 568.33 P
-0.03 (sent identifiers in programs represented as data.  Symbols may also be used as enumerated values as) 72 548.33 P
-0.04 (in Pascal.  A symbol may be written as an Rosette identifier preceded by a) 72 528.33 P
5 F
-0.09 (\325) 416.44 528.33 P
4 F
-0.04 ( \050e.g.,) 422.44 528.33 P
5 F
-0.09 (\325an-identifier) 449.94 528.33 P
4 F
-0.04 (\051.) 533.89 528.33 P
5 F
(\050-> Symbol\051) 72 500.67 T
6 F
(\336) 141.46 500.67 T
2 F
(operation) 157.32 500.67 T
1 F
(operation) 502.25 500.67 T
4 F
-0.13 (The prototype) 72 479.33 P
5 F
-0.28 (Symbol) 139.12 479.33 P
4 F
-0.13 ( responds to the) 175.1 479.33 P
5 F
-0.28 (->) 250.84 479.33 P
4 F
-0.13 ( operation with an operation) 262.83 479.33 P
5 F
-0.28 (->symbol) 396.4 479.33 P
4 F
-0.13 ( that may be used on) 444.37 479.33 P
-0.1 (other kinds of actors to produce a symbol corresponding to the actor.  In particular this is used to gen-) 72 459.33 P
(erate symbols from strings \321 for example, concatenation of a prefix with a unique number.) 72 439.33 T
5 F
(\050\050-> Symbol\051 \050concat "Gen" \050->string 123\051\051\051) 108 414.33 T
6 F
(\336) 360 404.33 T
5 F
( \325Gen123) 369.86 404.33 T
(\050->string) 72 381.67 T
2 F
(symbol) 131.97 381.67 T
5 F
(\051) 160.28 381.67 T
6 F
(\336) 169.78 381.67 T
2 F
(string) 185.64 381.67 T
1 F
(operation) 502.25 381.67 T
4 F
0.28 (The operation) 72 360.33 P
5 F
0.61 (->string) 139.76 360.33 P
4 F
0.28 ( when sent a symbol will respond with a string that is unique to the symbol) 187.73 360.33 P
(\050sometimes called its print-name\051.) 72 340.33 T
5 F
(\050->string \325aBcD\051) 108 315.33 T
6 F
(\336) 360 315.33 T
5 F
( "aBcD) 369.86 315.33 T
11 F
(") 405.85 315.33 T
FMENDPAGE
%%EndPage: "37" 36
%%Page: "36" 36
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(36) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(\050concat) 72 710.67 T
2 F
(tuple) 119.97 710.67 T
(tuple) 145.96 710.67 T
6 F
(\274) 171.95 710.67 T
5 F
(\051) 181.94 710.67 T
6 F
(\336) 191.43 710.67 T
2 F
(tuple) 207.3 710.67 T
1 F
(operation) 502.25 710.67 T
4 F
0.27 (The operation) 72 689.33 P
5 F
0.59 (concat) 139.74 689.33 P
4 F
0.27 (, when sent two or more tuples, returns a tuple that is the concatenation of its) 175.72 689.33 P
(arguments.) 72 669.33 T
5 F
(\050concat [1 2 3] [4 5 6]\051) 108 644.33 T
6 F
(\336) 360 644.33 T
5 F
( [1 2 3 4 5 6]) 369.86 644.33 T
(\050nth) 72 621.67 T
2 F
(tuple) 101.98 621.67 T
(index) 127.97 621.67 T
5 F
(\051) 149.62 621.67 T
6 F
(\336) 159.11 621.67 T
2 F
(any) 174.97 621.67 T
1 F
(operation) 502.25 621.67 T
4 F
(The) 72 597.67 T
5 F
(nth) 92.55 597.67 T
4 F
( operation expects a tuple and an index and returns the) 110.54 597.67 T
7 F
(n) 369.87 597.67 T
4 8 Q
(th) 375.97 601.67 T
4 10 Q
( element of the tuple.) 383.97 597.67 T
5 F
(\050nth [2 3 4 5 6] 3\051) 108 572.67 T
6 F
(\336) 360 572.67 T
5 F
( 5) 369.86 572.67 T
(\050set-nth) 72 550 T
2 F
(tuple) 125.97 550 T
(index) 151.96 550 T
(any) 179.6 550 T
5 F
(\051) 194.03 550 T
6 F
(\336) 203.53 550 T
2 F
(tuple) 219.39 550 T
1 F
(operation) 502.25 550 T
4 F
0.64 (This operation sets the) 72 528.67 P
7 F
0.64 (index) 183.21 528.67 P
4 F
0.64 ( element of) 208.18 528.67 P
7 F
0.64 (tuple) 263.77 528.67 P
4 F
0.64 ( to) 286.9 528.67 P
7 F
0.64 (any) 302.61 528.67 P
4 F
0.64 ( and returns the original) 319.46 528.67 P
7 F
0.64 (tuple) 439.43 528.67 P
4 F
0.64 (, modified at the) 462.56 528.67 P
7 F
(index) 72 508.67 T
4 F
( position.) 96.98 508.67 T
5 F
(\050head) 72 481 T
2 F
(tuple) 107.98 481 T
5 F
(\051) 127.97 481 T
6 F
(\336) 137.46 481 T
2 F
(any) 153.32 481 T
1 F
(operation) 502.25 481 T
4 F
(This operation is equivalent to) 72 459.67 T
5 F
(\050nth) 215.84 459.67 T
7 F
(tuple) 245.82 459.67 T
5 F
( 0\051.) 268.95 459.67 T
(\050sub-obj) 72 432 T
2 F
(tuple) 125.97 432 T
(index) 151.96 432 T
(size) 179.6 432 T
5 F
(\051) 194.59 432 T
6 F
(\336) 204.09 432 T
2 F
(tuple) 219.95 432 T
1 F
(operation) 502.25 432 T
4 F
0.4 (The operation) 72 410.67 P
5 F
0.87 (sub-obj) 139.99 410.67 P
4 F
0.4 ( when given a tuple and two numbers returns a \050sub\051 tuple) 181.97 410.67 P
7 F
0.4 (index) 461.29 410.67 P
4 F
0.4 (ed from the) 486.27 410.67 P
(first number, and has a) 72 390.67 T
7 F
(size) 183.44 390.67 T
4 F
( equal to the second number.) 200.27 390.67 T
5 F
(\050sub-obj [1 2 3 4 5] 2 3\051) 108 365.67 T
6 F
(\336) 360 365.67 T
5 F
( [3 4 5]) 369.86 365.67 T
(\050tail) 72 343 T
2 F
(tuple) 107.98 343 T
5 F
(\051) 127.97 343 T
6 F
(\336) 137.46 343 T
2 F
(tuple) 153.32 343 T
1 F
(operation) 502.25 343 T
4 F
(This operation is equivalent to) 72 321.67 T
5 F
(\050sub-obj) 215.84 321.67 T
7 F
(tuple) 269.81 321.67 T
5 F
( 1 \050- \050size) 292.94 321.67 T
7 F
(tuple) 364.9 321.67 T
5 F
(\051 1\051\051) 388.03 321.67 T
4 F
(.) 418.01 321.67 T
5 F
(\050map) 72 294 T
2 F
(tuple) 101.98 294 T
1 8 Q
(1) 121.97 290 T
2 10 Q
(proc) 131.97 294 T
5 F
( &) 150.29 294 T
2 F
(args) 168.28 294 T
5 F
(\051) 186.05 294 T
6 F
(\336) 195.54 294 T
2 F
(tuple) 211.4 294 T
1 8 Q
(2) 231.39 290 T
1 10 Q
(operation) 502.25 294 T
4 F
0.29 (This operation creates a new) 72 270.67 P
7 F
0.29 (tuple) 209.16 270.67 P
4 8 Q
0.23 (2) 232.28 266.67 P
4 10 Q
0.29 ( by sending each element of) 236.73 270.67 P
7 F
0.29 (tuple) 368.62 270.67 P
4 8 Q
0.23 (1) 391.75 266.67 P
4 10 Q
0.29 ( and its corresponding index to) 396.2 270.67 P
(the) 72 247.33 T
7 F
(procedure) 89.77 247.33 T
4 F
( in a request and placing the reply in the corresponding position of) 134.9 247.33 T
7 F
(tuple) 444.39 247.33 T
4 8 Q
(2) 467.51 243.33 T
4 10 Q
(.) 471.96 247.33 T
5 F
(\050map [1 2 3 4] \050proc [i v] \050+ v 2\051\051\051) 108 219 T
6 F
(\336) 360 219 T
5 F
( [3 4 5 6]) 369.86 219 T
4 F
(If any) 72 199 T
7 F
(args) 101.98 199 T
4 F
( are included they are passed in each call to the) 121.96 199 T
7 F
(proc) 344.09 199 T
4 F
(:) 363.7 199 T
5 F
(\050map [1 2 3 4] \050proc [i v x] \050+ v x\051\051 2\051) 108 174 T
6 F
(\336) 360 174 T
5 F
( [3 4 5 6]) 369.86 174 T
(\050walk) 72 151.33 T
2 F
(tuple) 107.98 151.33 T
(proc) 133.97 151.33 T
5 F
( &) 152.29 151.33 T
2 F
(args) 170.28 151.33 T
5 F
(\051) 188.05 151.33 T
6 F
(\336) 197.54 151.33 T
2 F
(tuple) 213.4 151.33 T
1 F
(operation) 502.25 151.33 T
4 F
-0.67 (The) 72 130 P
5 F
-1.45 (walk) 91.88 130 P
4 F
-0.67 ( operation visits each element of) 115.86 130 P
7 F
-0.67 (tuple) 263.63 130 P
4 F
-0.67 ( calling the) 286.75 130 P
7 F
-0.67 (proc) 338.98 130 P
4 F
-0.67 ( with the index of the element, the value) 358.59 130 P
-0.08 (of the element and any) 72 110 P
7 F
-0.08 (args) 180.26 110 P
4 F
-0.08 ( that may be supplied.  The) 200.24 110 P
5 F
-0.17 (walk) 328.72 110 P
4 F
-0.08 ( returns the original) 352.7 110 P
7 F
-0.08 (tuple) 449 110 P
4 F
-0.08 ( after each ele-) 472.13 110 P
FMENDPAGE
%%EndPage: "36" 35
%%Page: "35" 35
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(35) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
(The operation) 72 713.33 T
5 F
(concat) 139.19 713.33 T
4 F
( can be used to create a new string from two or more strings:) 175.17 713.33 T
5 F
(\050concat "A " "word"\051) 108 693.33 T
6 F
(\336) 360 693.33 T
5 F
( "A word") 369.86 693.33 T
(\050nth) 72 670.67 T
2 F
(string) 101.98 670.67 T
(number) 131.31 670.67 T
5 F
(\051) 161.84 670.67 T
6 F
(\336) 171.34 670.67 T
2 F
(character) 187.2 670.67 T
1 F
(operation) 502.25 670.67 T
4 F
(The) 72 646.67 T
5 F
(nth) 92.55 646.67 T
4 F
( operation applied to a string returns the) 110.54 646.67 T
7 F
(n) 302.3 646.67 T
4 8 Q
(th) 308.41 650.67 T
4 10 Q
( character of the string) 316.41 646.67 T
5 F
(0) 425.05 646.67 T
4 F
(-relative:) 431.04 646.67 T
5 F
(\050nth "A word" 2\051) 108 626.67 T
6 F
(\336) 360 626.67 T
5 F
( #\134w) 369.86 626.67 T
(\050nth "A word" 1\051) 108 616.67 T
6 F
(\336) 360 616.67 T
5 F
( #\134) 369.86 616.67 T
(\050nth "A \134"" 2\051) 108 606.67 T
6 F
(\336) 360 606.67 T
5 F
( #\134") 369.86 606.67 T
(\050sub-obj) 72 584 T
2 F
(string) 125.97 584 T
(number) 155.29 584 T
(number) 191.82 584 T
5 F
(\051) 222.36 584 T
6 F
(\336) 231.85 584 T
2 F
(string) 247.71 584 T
1 F
(operation) 502.25 584 T
4 F
0.03 (The operation) 72 562.67 P
5 F
0.07 (sub-obj) 139.26 562.67 P
4 F
0.03 ( can be used to obtain a substring of a given string as specified by a) 181.23 562.67 P
5 F
0.07 (0) 495.13 562.67 P
4 F
0.03 (-relative) 501.13 562.67 P
(index and a size:) 72 542.67 T
5 F
(\050sub-obj "A word" 2 4\051) 108 522.67 T
6 F
(\336) 360 522.67 T
5 F
( "word") 369.86 522.67 T
(\050->symbol) 72 502.67 T
2 F
(string) 131.97 502.67 T
5 F
(\051) 155.29 502.67 T
6 F
(\336) 163.79 502.67 T
2 F
(symbol) 179.65 502.67 T
1 F
(operation) 502.25 502.67 T
4 F
-0.07 (These operations convert strings respectively to numbers and symbols, and are principally used in in-) 72 482.67 P
(put operations and construction of new symbols in programs.) 72 462.67 T
3 12 Q
(7.6.) 72 431.33 T
(Tuples) 108 431.33 T
4 10 Q
0.13 (Tuples result from evaluating expressions of the form) 72 412.67 P
5 F
0.28 (\325[) 323.26 412.67 P
6 F
0.12 (\341) 335.26 412.67 P
7 F
0.13 (expr) 338.55 412.67 P
6 F
0.12 (\361) 358.15 412.67 P
0.12 (\274) 367.71 412.67 P
5 F
0.28 (]) 377.71 412.67 P
4 F
0.13 ( and performing operations on tu-) 383.71 412.67 P
-0.17 (ples.  Tuples are sequences of elements that occur in a particular order.  Tuples are indexed) 72 392.67 P
5 F
-0.38 (0) 495.13 392.67 P
4 F
-0.17 (-relative) 501.13 392.67 P
-0.49 (and thus the maximum index is) 72 372.67 P
5 F
-1.05 (\050- \050size) 218.85 372.67 P
7 F
-0.49 (tuple) 270.73 372.67 P
5 F
-1.05 (\051 1\051) 293.86 372.67 P
4 F
-0.49 (.  A) 316.8 372.67 P
5 F
-1.05 (runtime-error) 333.67 372.67 P
4 F
-0.49 ( is signalled on out-of-bound) 411.63 372.67 P
(indices.) 72 352.67 T
5 F
(\050new Tuple) 72 325 T
2 F
(sequence_of_values) 137.96 325 T
5 F
(\051) 217.9 325 T
6 F
(\336) 227.4 325 T
2 F
(tuple) 243.26 325 T
1 F
(operation) 502.25 325 T
5 F
(\050newN Tuple) 72 311 T
2 F
(fixnum) 143.96 311 T
(expr) 177.16 311 T
5 F
(\051) 194.92 311 T
6 F
(\336) 204.42 311 T
2 F
(tuple) 220.28 311 T
1 F
(operation) 502.25 311 T
4 F
-0 (The) 72 289.67 P
5 F
-0.01 (new) 92.54 289.67 P
4 F
-0 ( operation will return a newly created tuple actor.) 110.54 289.67 P
5 F
-0.01 (newN) 346.32 289.67 P
4 F
-0 ( returns a tuple of size) 370.31 289.67 P
7 F
-0 (fixnum) 476.9 289.67 P
4 F
-0 ( which) 509.65 289.67 P
(is initialized so that each element is a copy of the result of) 72 269.67 T
7 F
(expr) 342.63 269.67 T
4 F
(.) 362.24 269.67 T
5 F
(\050new Tuple\051) 108 244.67 T
6 F
(\336) 360 244.67 T
5 F
( []) 369.86 244.67 T
(\050new Tuple 1 \325a "a"\051) 108 234.67 T
6 F
(\336) 360 234.67 T
5 F
( [1 \325a "a"]) 369.86 234.67 T
(\050newN Tuple 4 \325a\051) 108 224.67 T
6 F
(\336) 360 224.67 T
5 F
( [\325a \325a \325a \325a]) 369.86 224.67 T
(\050size) 72 202 T
2 F
(tuple) 107.98 202 T
5 F
(\051) 127.97 202 T
6 F
(\336) 137.46 202 T
2 F
(number) 153.32 202 T
1 F
(operation) 502.25 202 T
4 F
(The) 72 180.67 T
5 F
(size) 92.55 180.67 T
4 F
( operation returns the number of elements in the tuple.) 116.54 180.67 T
5 F
(\050size []\051) 108 155.67 T
6 F
(\336) 360 155.67 T
5 F
( 0) 369.86 155.67 T
(\050size [2 4 6 8]\051) 108 145.67 T
6 F
(\336) 360 145.67 T
5 F
( 4) 369.86 145.67 T
(\050null?) 72 123 T
2 F
(tuple) 113.98 123 T
5 F
(\051) 133.97 123 T
6 F
(\336) 143.46 123 T
2 F
(boolean) 159.32 123 T
1 F
(operation) 502.25 123 T
4 F
0.17 (The predicate) 72 101.67 P
5 F
0.37 (null?) 138.61 101.67 P
4 F
0.17 ( returns) 168.59 101.67 P
5 F
0.37 (#t) 209.1 101.67 P
4 F
0.17 ( if the) 221.09 101.67 P
7 F
0.17 (tuple) 251.41 101.67 P
4 F
0.17 ( has) 274.54 101.67 P
5 F
0.37 (size) 296.73 101.67 P
0.37 (0) 323.67 101.67 P
4 F
0.17 (, and returns) 329.67 101.67 P
5 F
0.37 (#f) 393.3 101.67 P
4 F
0.17 ( otherwise.  This operation is) 405.3 101.67 P
(equivalent to an explicit test for) 72 81.67 T
5 F
(\050= \050size) 222.13 81.67 T
7 F
(tuple) 276.1 81.67 T
5 F
(\051 0\051) 299.23 81.67 T
4 F
( or) 323.21 81.67 T
5 F
(\050same?) 338.2 81.67 T
7 F
(tuple) 380.18 81.67 T
5 F
( []\051) 403.31 81.67 T
4 F
(.) 427.3 81.67 T
FMENDPAGE
%%EndPage: "35" 34
%%Page: "34" 34
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(34) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 45 540 720 R
V
4 F
0 X
(The following familiar numeric operations are defined on both kinds of numbers:) 72 713.33 T
5 F
(\050+ n) 108 693.33 T
1 8 Q
(1) 131.99 689.33 T
5 10 Q
(n) 141.98 693.33 T
1 8 Q
(2) 147.98 689.33 T
6 10 Q
(\274) 157.97 693.33 T
5 F
(\051) 167.97 693.33 T
(\050- n) 252 693.33 T
1 8 Q
(1) 275.99 689.33 T
5 10 Q
(n) 285.98 693.33 T
1 8 Q
(2) 291.98 689.33 T
5 10 Q
(\051) 295.98 693.33 T
(\050* n) 396 693.33 T
1 8 Q
(1) 419.99 689.33 T
5 10 Q
(n) 429.98 693.33 T
1 8 Q
(2) 435.98 689.33 T
6 10 Q
(\274) 445.97 693.33 T
5 F
(\051) 455.97 693.33 T
(\050/ n) 108 680 T
1 8 Q
(1) 131.99 676 T
5 10 Q
(n) 141.98 680 T
1 8 Q
(2) 147.98 676 T
5 10 Q
(\051) 151.98 680 T
(\050min n) 252 680 T
1 8 Q
(1) 287.98 676 T
5 10 Q
(n) 297.98 680 T
1 8 Q
(2) 303.97 676 T
6 10 Q
(\274) 313.97 680 T
5 F
(\051) 323.96 680 T
(\050max n) 396 680 T
1 8 Q
(1) 431.98 676 T
5 10 Q
(n) 441.98 680 T
1 8 Q
(2) 447.97 676 T
6 10 Q
(\274) 457.97 680 T
5 F
(\051) 467.96 680 T
(\050abs n) 108 666.67 T
1 8 Q
(1) 143.98 662.67 T
5 10 Q
(\051) 147.98 666.67 T
(\050expt n) 252 666.67 T
1 8 Q
(1) 293.98 662.67 T
5 10 Q
(n) 303.97 666.67 T
1 8 Q
(2) 309.97 662.67 T
5 10 Q
(\051) 313.97 666.67 T
4 F
(In addition, the following are defined on) 72 643.33 T
5 F
(Fixnums) 259.88 643.33 T
4 F
(:) 301.85 643.33 T
5 F
(\050% n) 108 618.33 T
1 8 Q
(1) 131.99 614.33 T
5 10 Q
(n) 141.98 618.33 T
1 8 Q
(2) 147.98 614.33 T
5 10 Q
(\051) 151.98 618.33 T
(\050cdiv n) 252 618.33 T
1 8 Q
(1) 293.98 614.33 T
5 10 Q
(n) 303.97 618.33 T
1 8 Q
(2) 309.97 614.33 T
5 10 Q
(\051) 313.97 618.33 T
(\050lg n) 108 605 T
1 8 Q
(1) 137.98 601 T
5 10 Q
(\051) 141.98 605 T
(\050lgf n) 252 605 T
1 8 Q
(1) 287.98 601 T
5 10 Q
(\051) 291.98 605 T
(\050lognot n) 108 591.67 T
1 8 Q
(1) 161.97 587.67 T
5 10 Q
(\051) 165.97 591.67 T
(\050logand n) 252 591.67 T
1 8 Q
(1) 305.97 587.67 T
5 10 Q
(n) 315.96 591.67 T
1 8 Q
(2) 321.96 587.67 T
6 10 Q
(\274) 331.96 591.67 T
5 F
(\051) 341.95 591.67 T
(\050logxor n) 396 591.67 T
1 8 Q
(1) 449.97 587.67 T
5 10 Q
(n) 459.96 591.67 T
1 8 Q
(2) 465.96 587.67 T
6 10 Q
(\274) 475.96 591.67 T
5 F
(\051) 485.95 591.67 T
(\050logor n) 108 578.33 T
1 8 Q
(1) 155.97 574.33 T
5 10 Q
(n) 165.97 578.33 T
1 8 Q
(2) 171.96 574.33 T
6 10 Q
(\274) 181.96 578.33 T
5 F
(\051) 191.95 578.33 T
(\050->float n) 252 578.33 T
1 8 Q
(1) 311.97 574.33 T
5 10 Q
(\051) 315.96 578.33 T
4 F
(Also, the following are defined on) 72 555 T
5 F
(Floats) 228.59 555 T
(\050floor n) 108 530 T
1 8 Q
(1) 155.97 526 T
5 10 Q
(\051) 159.97 530 T
(\050ceil n) 252 530 T
1 8 Q
(1) 293.98 526 T
5 10 Q
(\051) 297.98 530 T
(\050exp n) 396 530 T
1 8 Q
(1) 431.98 526 T
5 10 Q
(\051) 435.98 530 T
(\050log n) 108 516.67 T
1 8 Q
(1) 143.98 512.67 T
5 10 Q
(\051) 147.98 516.67 T
(\050log10 n) 252 516.67 T
1 8 Q
(1) 299.97 512.67 T
5 10 Q
(\051) 303.97 516.67 T
(\050->fixnum n) 396 516.67 T
1 8 Q
(1) 461.96 512.67 T
5 10 Q
(\051) 465.96 516.67 T
(\050->string) 72 493.33 T
2 F
(number) 131.97 493.33 T
5 F
(\051) 162.5 493.33 T
6 F
(\336) 171 493.33 T
2 F
(string) 186.86 493.33 T
1 F
(operation) 502.25 493.33 T
4 F
(Numbers respond to the coercion operation) 72 473.33 T
5 F
(->string) 273.37 473.33 T
4 F
(:) 321.34 473.33 T
5 F
(\050->string 3291\051) 108 453.33 T
6 F
(\336) 360 453.33 T
5 F
( "3291") 369.86 453.33 T
(\050->string -624\051) 108 443.33 T
6 F
(\336) 360 443.33 T
5 F
( "-624") 369.86 443.33 T
(\050->string 12.3e-2\051) 108 433.33 T
6 F
(\336) 360 433.33 T
5 F
( "0.123") 369.86 433.33 T
(\050->char) 72 413.33 T
2 F
(number) 119.97 413.33 T
5 F
(\051) 150.51 413.33 T
6 F
(\336) 159 413.33 T
2 F
(character) 174.86 413.33 T
1 F
(operation) 502.25 413.33 T
5 F
(Fixnums) 72 393.33 T
4 F
( also respond to) 113.98 393.33 T
5 F
(->char) 188.95 393.33 T
4 F
(:) 224.93 393.33 T
5 F
(\050->character 65\051) 108 373.33 T
6 F
(\336) 360 373.33 T
5 F
( #\134A) 369.86 373.33 T
(\050->character 933\051) 108 363.33 T
6 F
(\336) 360 363.33 T
5 F
( #\134%) 369.86 363.33 T
3 12 Q
(7.5.) 72 342 T
(Strings) 108 342 T
4 10 Q
-0.13 (Strings are sequences of characters, indexed from) 72 323.33 P
5 F
-0.27 (1) 303.21 323.33 P
4 F
-0.13 ( to) 309.21 323.33 P
5 F
-0.27 (\050size) 323.4 323.33 P
7 F
-0.13 (string) 359.11 323.33 P
5 F
-0.27 (\051) 386.3 323.33 P
4 F
-0.13 (.  They are written as sequences) 392.3 323.33 P
0.41 (of characters enclosed within matching) 72 303.33 P
5 F
0.88 (") 257.47 303.33 P
4 F
0.41 ( characters.  The character) 263.47 303.33 P
5 F
0.88 (") 392.3 303.33 P
4 F
0.41 ( can be included in a string by) 398.3 303.33 P
-0.02 (preceding it with a) 72 283.33 P
5 F
-0.05 (\134) 161.49 283.33 P
4 F
-0.02 (.  The) 167.49 283.33 P
5 F
-0.05 (\134) 196.3 283.33 P
4 F
-0.02 ( may be also be included by preceding it with a) 202.3 283.33 P
5 F
-0.05 (\134) 420.67 283.33 P
4 F
-0.02 (.  A string may be empty) 426.67 283.33 P
5 F
("") 72 263.33 T
4 F
(, and has) 83.99 263.33 T
5 F
(size) 128.8 263.33 T
(0) 155.56 263.33 T
4 F
(.) 161.56 263.33 T
5 F
("A string with a \134" and a \134\134 in it") 108 238.33 T
2 F
(displays) 323.88 238.33 T
5 F
(A string with a " and a \134 in it) 108 218.34 T
(\050-> String\051) 72 195.67 T
6 F
(\336) 141.46 195.67 T
2 F
(operation) 157.32 195.67 T
1 F
(operation) 502.25 195.67 T
4 F
0.06 (The operation for converting objects to strings, named) 72 174.34 P
5 F
0.13 (->string) 324.58 174.34 P
4 F
0.06 ( in the initial environment, provides) 372.55 174.34 P
(an interface so that a displayable representation of actors may be uniformly generated.) 72 154.34 T
5 F
(\050size) 72 126.67 T
2 F
(string) 107.98 126.67 T
5 F
(\051) 131.31 126.67 T
6 F
(\336) 140.8 126.67 T
2 F
(number) 156.66 126.67 T
1 F
(operation) 502.25 126.67 T
4 F
(The) 72 105.34 T
5 F
(size) 92.55 105.34 T
4 F
( operation returns the number of characters in the string.) 116.54 105.34 T
5 F
(\050size "A string with a \134" in it"\051) 108 85.34 T
6 F
(\336) 360 85.34 T
5 F
( 23) 369.86 85.34 T
(\050concat) 72 62.67 T
2 F
(string) 119.97 62.67 T
(string) 149.3 62.67 T
6 F
(\274) 178.62 62.67 T
5 F
(\051) 188.62 62.67 T
6 F
(\336) 198.11 62.67 T
2 F
(string) 213.97 62.67 T
1 F
(operation) 502.25 62.67 T
FMENDPAGE
%%EndPage: "34" 33
%%Page: "33" 33
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(33) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 12 Q
0 X
(7.3.) 72 712 T
(Characters) 108 712 T
4 10 Q
0.17 (Characters are objects that represent printed characters such as letters and digits.  They are written) 72 693.33 P
-0.5 (using the notation) 72 673.33 P
5 F
-1.07 (#\134) 157.88 673.33 P
6 F
-0.45 (\341) 169.88 673.33 P
7 F
-0.5 (character) 173.16 673.33 P
6 F
-0.45 (\361) 216.45 673.33 P
4 F
-0.5 ( or) 219.74 673.33 P
5 F
-1.07 (#\134) 233.74 673.33 P
6 F
-0.45 (\341) 245.73 673.33 P
7 F
-0.5 (character escape) 249.02 673.33 P
6 F
-0.45 (\361) 323.81 673.33 P
4 F
-0.5 (.  Characters are constants and hence evaluate) 327.1 673.33 P
(to themselves.  The character escapes are discussed in section) 72 653.33 T
8 F
(3.2) 360.19 653.33 T
4 F
( and include:) 374.44 653.33 T
5 F
(#\134\134n #\134\134r #\134\134t #\134\134f #\134\134x) 108 628.33 T
1 F
(and) 257.92 628.33 T
5 F
( #\134\134\134) 272.35 628.33 T
4 F
(The escapes are used to write certain non-graphic characters and to write the backslash character.) 72 608.33 T
5 F
(\050-> Char\051) 72 580.67 T
6 F
(\336) 129.47 580.67 T
2 F
(operation) 145.33 580.67 T
1 F
(operation) 502.25 580.67 T
4 F
-0.16 (The prototypical) 72 559.33 P
5 F
-0.34 (Char) 150.35 559.33 P
4 F
-0.16 ( responds to the operation) 174.34 559.33 P
5 F
-0.34 (->) 296.46 559.33 P
4 F
-0.16 ( with the operation) 308.45 559.33 P
5 F
-0.34 (->char) 398.72 559.33 P
4 F
-0.16 ( that may be used with) 434.7 559.33 P
0.13 (other kinds of actors \050in particular) 72 539.33 P
5 F
0.29 (Fixnums) 234.75 539.33 P
4 F
0.13 (\051 to produce a character.  The following comparison oper-) 276.73 539.33 P
(ations are defined on characters:) 72 519.33 T
5 F
(\050= c) 108 494.33 T
1 8 Q
(1) 131.99 490.33 T
5 10 Q
(c) 141.98 494.33 T
1 8 Q
(2) 147.98 490.33 T
5 10 Q
(\051) 151.98 494.33 T
(\050< c) 252 494.33 T
1 8 Q
(1) 275.99 490.33 T
5 10 Q
(c) 285.98 494.33 T
1 8 Q
(2) 291.98 490.33 T
5 10 Q
(\051) 295.98 494.33 T
(\050> c) 396 494.33 T
1 8 Q
(1) 419.99 490.33 T
5 10 Q
(c) 429.98 494.33 T
1 8 Q
(2) 435.98 490.33 T
5 10 Q
(\051) 439.98 494.33 T
(\050!= c) 108 481 T
1 8 Q
(1) 137.98 477 T
5 10 Q
(c) 147.98 481 T
1 8 Q
(2) 153.98 477 T
5 10 Q
(\051) 157.97 481 T
(\050<= c) 252 481 T
1 8 Q
(1) 281.98 477 T
5 10 Q
(c) 291.98 481 T
1 8 Q
(2) 297.98 477 T
5 10 Q
(\051) 301.97 481 T
(\050>= c) 396 481 T
1 8 Q
(1) 425.98 477 T
5 10 Q
(c) 435.98 481 T
1 8 Q
(2) 441.98 477 T
5 10 Q
(\051) 445.97 481 T
4 F
(The ordering is the conventional ASCII character set ordering.  For example:) 72 457.67 T
5 F
(\050< #\134G #\134g\051) 108 432.67 T
6 F
(\336) 360 432.67 T
5 F
( #t) 369.86 432.67 T
(\050< #\134f #\134G\051) 108 422.67 T
6 F
(\336) 360 422.67 T
5 F
( #f) 369.86 422.67 T
(\050< #\1344 #\134A\051) 108 412.67 T
6 F
(\336) 360 412.67 T
5 F
( #t) 369.86 412.67 T
(\050->fixnum) 72 392.67 T
2 F
(character) 131.97 392.67 T
5 F
(\051) 170.83 392.67 T
6 F
(\336) 179.32 392.67 T
2 F
(number) 195.18 392.67 T
1 F
(operation) 502.25 392.67 T
4 F
(Characters respond to the operation) 72 372.67 T
5 F
(->fixnum) 241.54 372.67 T
4 F
( to convert themselves to the equivalent number:) 289.51 372.67 T
5 F
(\050->fixnum #\134A\051) 108 347.67 T
6 F
(\336) 360 347.67 T
5 F
( 65) 369.86 347.67 T
4 F
(The coercion from characters to numbers preserves the ordering of characters.) 72 327.67 T
3 12 Q
(7.4.) 72 296.33 T
(Numbers) 108 296.33 T
4 10 Q
(Rosette 1.0 provides) 72 277.67 T
5 F
(Fixnums) 167.89 277.67 T
4 F
( and) 209.86 277.67 T
5 F
(Floats) 232.82 277.67 T
4 F
(.  Future releases will provide) 268.8 277.67 T
5 F
(Bignums) 409.48 277.67 T
4 F
(.) 451.46 277.67 T
5 F
(\050-> Fixnum\051) 72 250 T
6 F
(\336) 141.46 250 T
2 F
(operation) 157.32 250 T
1 F
(operation) 502.25 250 T
5 F
(\050-> Float\051) 72 236 T
6 F
(\336) 135.46 236 T
2 F
(operation) 151.33 236 T
1 F
(operation) 502.25 236 T
4 F
0.03 (The numbers answer the) 72 214.67 P
5 F
0.07 (->) 190.22 214.67 P
4 F
0.03 ( operation with the operations) 202.21 214.67 P
5 F
0.07 (->fixnum) 344.52 214.67 P
4 F
0.03 ( and) 392.5 214.67 P
5 F
0.07 (->float) 415.52 214.67 P
4 F
0.03 ( that may be used) 457.49 214.67 P
0.66 (to convert other kinds of entities to numbers.  For example, see sections) 72 194.67 P
8 F
0.68 (7.3) 414.33 194.67 P
4 F
0.66 ( and) 428.58 194.67 P
8 F
0.68 (7.5) 452.86 194.67 P
4 F
0.66 (.  The following) 467.11 194.67 P
(comparison predicates are defined on numbers:) 72 174.67 T
5 F
(\050= n) 108 154.67 T
1 8 Q
(1) 131.99 150.67 T
5 10 Q
(n) 141.98 154.67 T
1 8 Q
(2) 147.98 150.67 T
5 10 Q
(\051) 151.98 154.67 T
(\050< n) 252 154.67 T
1 8 Q
(1) 275.99 150.67 T
5 10 Q
(n) 285.98 154.67 T
1 8 Q
(2) 291.98 150.67 T
5 10 Q
(\051) 295.98 154.67 T
(\050> n) 396 154.67 T
1 8 Q
(1) 419.99 150.67 T
5 10 Q
(n) 429.98 154.67 T
1 8 Q
(2) 435.98 150.67 T
5 10 Q
(\051) 439.98 154.67 T
(\050!= n) 108 141.33 T
1 8 Q
(1) 137.98 137.33 T
5 10 Q
(n) 147.98 141.33 T
1 8 Q
(2) 153.98 137.33 T
5 10 Q
(\051) 157.97 141.33 T
(\050<= n) 252 141.33 T
1 8 Q
(1) 281.98 137.33 T
5 10 Q
(n) 291.98 141.33 T
1 8 Q
(2) 297.98 137.33 T
5 10 Q
(\051) 301.97 141.33 T
(\050>= n) 396 141.33 T
1 8 Q
(1) 425.98 137.33 T
5 10 Q
(n) 435.98 141.33 T
1 8 Q
(2) 441.98 137.33 T
5 10 Q
(\051) 445.97 141.33 T
FMENDPAGE
%%EndPage: "33" 32
%%Page: "32" 32
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(32) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 12 Q
0 X
(7.) 72 712 T
(Atomic Objects, Strings, and Tuples) 90 712 T
4 10 Q
0.12 (This section discusses the operations on the atomic objects which include special constants, booleans,) 72 686.33 P
(characters, numbers, and symbols.  Strings and tuples are also discussed.) 72 666.33 T
3 12 Q
(7.1.) 72 635 T
(Special constants) 108 635 T
4 10 Q
-0.11 (The constant) 72 616.33 P
5 F
-0.23 (#niv) 134.72 616.33 P
4 F
-0.11 ( is used as a value when there is no other appropriate value.  For example, a slot of) 158.71 616.33 P
-0.03 (an actor might be initialized to) 72 596.33 P
5 F
-0.06 (#niv) 217.15 596.33 P
4 F
-0.03 ( to indicate that no meaningful value is available.  The operation) 241.14 596.33 P
5 F
-0.28 (niv?) 72 576.33 P
4 F
-0.13 ( returns) 95.99 576.33 P
5 F
-0.28 (#t) 135.88 576.33 P
4 F
-0.13 ( if it is sent to) 147.88 576.33 P
5 F
-0.28 (#niv) 213.55 576.33 P
4 F
-0.13 ( and returns) 237.54 576.33 P
5 F
-0.28 (#f) 297.48 576.33 P
4 F
-0.13 ( otherwise.  The constant) 309.47 576.33 P
5 F
-0.28 (#absent) 427.84 576.33 P
4 F
-0.13 ( is used to indi-) 469.81 576.33 P
-0.01 (cate that a key has no binding in some context.  It is returned by such operations as) 72 556.33 P
5 F
-0.02 (lookup) 461.1 556.33 P
4 F
-0.01 (.  The op-) 497.08 556.33 P
0.14 (eration) 72 536.33 P
5 F
0.3 (absent?) 108.05 536.33 P
4 F
0.14 ( returns) 150.03 536.33 P
5 F
0.3 (#t) 190.46 536.33 P
4 F
0.14 ( if sent to) 202.46 536.33 P
5 F
0.3 (#absent) 249.11 536.33 P
4 F
0.14 ( and) 291.09 536.33 P
5 F
0.3 (#f) 314.33 536.33 P
4 F
0.14 ( otherwise.  The constant) 326.32 536.33 P
5 F
0.3 (#eof) 446.04 536.33 P
4 F
0.14 ( is the result of) 470.03 536.33 P
0.55 (a) 72 516.33 P
5 F
1.19 (read) 80.89 516.33 P
4 F
0.55 ( operation on an input stream when the end of the stream has been reached \050see section) 104.88 516.33 P
8 F
0.57 (11) 522.42 516.33 P
4 F
0.55 (\051.) 533.89 516.33 P
(The operation) 72 496.33 T
5 F
(eof?) 139.19 496.33 T
4 F
( returns) 163.18 496.33 T
5 F
(#t) 203.34 496.33 T
4 F
( if sent to) 215.33 496.33 T
5 F
(#eof) 261.43 496.33 T
4 F
( and) 285.41 496.33 T
5 F
(#f) 308.37 496.33 T
4 F
( otherwise.) 320.36 496.33 T
3 12 Q
(7.2.) 72 465 T
(Booleans) 108 465 T
4 10 Q
(The boolean constants are) 72 446.33 T
5 F
(#t) 195.47 446.33 T
4 F
( and) 207.47 446.33 T
5 F
(#f) 230.42 446.33 T
4 F
(.  As with all constants, they evaluate to themselves.) 242.42 446.33 T
5 F
(\050and) 72 421.33 T
6 F
(\341) 101.98 421.33 T
2 F
(expr) 105.27 421.33 T
6 F
(\361) 123.03 421.33 T
(\274) 132.32 421.33 T
5 F
(\051) 142.31 421.33 T
6 F
(\336) 154.3 421.33 T
2 F
(boolean) 170.17 421.33 T
1 F
(derived syntax) 481.43 421.33 T
4 F
0.35 (The expressions are evaluated in text order.  An expression that evaluates to) 72 401.33 P
5 F
0.76 (#f) 434.22 401.33 P
4 F
0.35 ( terminates the con-) 446.21 401.33 P
0.18 (struct, the result of the expression is) 72 381.33 P
5 F
0.39 (#f) 245.21 381.33 P
4 F
0.18 (, and the evaluation of the remaining expressions is not com-) 257.2 381.33 P
(pleted.  If all expressions evaluate to) 72 361.33 T
5 F
(#t) 244.15 361.33 T
4 F
(, then the result of the expression is) 256.15 361.33 T
5 F
(#t) 424.59 361.33 T
4 F
(.) 436.58 361.33 T
5 F
(\050and \050= 2 2\051 \050> 2 1\051\051) 108 341.33 T
6 F
(\336) 360 341.33 T
5 F
( #t) 369.86 341.33 T
(\050and \050!= y 0\051 \050= \050/ x y\051 4\051\051) 108 331.33 T
6 F
(\336) 360 331.33 T
5 F
( #f) 369.86 331.33 T
2 F
(if) 393.85 331.33 T
5 F
(y) 401.91 331.33 T
2 F
( is) 407.9 331.33 T
5 F
(0) 419.57 331.33 T
(\050and\051) 108 321.33 T
6 F
(\336) 360 321.33 T
5 F
( #t) 369.86 321.33 T
(\050or) 72 301.33 T
6 F
(\341) 95.99 301.33 T
2 F
(expr) 99.28 301.33 T
6 F
(\361) 117.04 301.33 T
(\274) 126.32 301.33 T
5 F
(\051) 136.32 301.33 T
6 F
(\336) 148.31 301.33 T
2 F
(boolean) 164.17 301.33 T
1 F
(derived syntax) 481.43 301.33 T
4 F
0.35 (The expressions are evaluated in text order.  An expression that evaluates to) 72 281.33 P
5 F
0.76 (#t) 434.22 281.33 P
4 F
0.35 ( terminates the con-) 446.21 281.33 P
0.18 (struct, the result of the expression is) 72 261.33 P
5 F
0.39 (#t) 245.21 261.33 P
4 F
0.18 (, and the evaluation of the remaining expressions is not com-) 257.2 261.33 P
(pleted.  If all expressions evaluate to) 72 241.33 T
5 F
(#f) 244.15 241.33 T
4 F
(, then the result of the expression is) 256.15 241.33 T
5 F
(#f) 424.59 241.33 T
4 F
(.) 436.58 241.33 T
5 F
(\050or \050= 2 2\051 \050> 2 1\051\051) 108 221.33 T
6 F
(\336) 360 221.33 T
5 F
( #t) 369.86 221.33 T
(\050or \050= 2 3\051 \050< 1 2\051 \050= \050/ 3 0\051 1\051\051) 108 211.33 T
6 F
(\336) 360 211.33 T
5 F
( #t) 369.86 211.33 T
(\050or\051) 108 201.33 T
6 F
(\336) 360 201.33 T
5 F
( #f) 369.86 201.33 T
(\050not) 72 181.33 T
6 F
(\341) 101.98 181.33 T
2 F
(expr) 105.27 181.33 T
6 F
(\361) 123.03 181.33 T
5 F
(\051) 126.32 181.33 T
6 F
(\336) 138.31 181.33 T
2 F
(boolean) 154.18 181.33 T
1 F
(derived syntax) 481.43 181.33 T
4 F
(The derived expression) 72 161.33 T
5 F
(not) 181.57 161.33 T
4 F
( expects a boolean value and returns the negation of that value:) 199.56 161.33 T
5 F
(\050not #t\051) 108 136.33 T
6 F
(\336) 360 136.33 T
5 F
( #f) 369.86 136.33 T
(\050not #f\051) 108 126.33 T
6 F
(\336) 360 126.33 T
5 F
( #t) 369.86 126.33 T
FMENDPAGE
%%EndPage: "32" 31
%%Page: "31" 31
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(31) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(\050deposit my-account 100.01\051) 108 713.33 T
6 F
(\336) 275.91 713.33 T
5 F
( [\325deposited 100.01]) 285.77 713.33 T
(\050withdraw my-account 78.87\051) 108 703.33 T
6 F
(\336) 275.91 703.33 T
5 F
( [\325withdrew 78.87]) 285.77 703.33 T
4 F
(Now a) 72 683.33 T
5 F
(SafeAccount) 104.03 683.33 T
4 F
( can be defined that provides overdraft protection through a second account:) 170 683.33 T
5 F
(\050defActor SafeAccount) 108 658.33 T
(  \050extends& BankAccount\051) 108 648.33 T
(  \050slots& backup BankAccount\051) 108 638.33 T
(\050method \050withdraw amount\051) 119.99 618.33 T
(    \050cond \050\050<= amount balance\051) 108 608.33 T
(\050update balance \050- balance amount\051\051) 173.96 598.33 T
(           [\325withdrew amount]\051) 108 588.33 T
(          \050\050> amount balance\051) 108 578.33 T
(           \050let [[[status value] \050withdraw backup \050- amount balance\051\051]]) 108 568.33 T
(\050if \050same? status \325withdrew\051) 185.96 558.33 T
(                 \050block \050update balance 0\051) 108 548.33 T
(                        [\325withdrew amount]\051) 108 538.33 T
(                 \050block \050update\051) 108 528.33 T
(                        [\325overdraft value]\051\051\051\051\051\051 \051) 108 518.33 T
4 F
-0.54 (The above definition extends) 72 498.33 P
5 F
-1.16 (BankAccount) 205.54 498.33 P
4 F
-0.54 ( with a new slot) 271.5 498.33 P
5 F
-1.16 (backup) 344.73 498.33 P
4 F
-0.54 ( to hold the secondary account, and) 380.71 498.33 P
0.82 (overrides the method for) 72 478.33 P
5 F
1.77 (withdraw) 191.51 478.33 P
4 F
0.82 ( so that the) 239.48 478.33 P
5 F
1.77 (backup) 297.93 478.33 P
4 F
0.82 ( account is accessed if there are not enough) 333.92 478.33 P
-0.52 (funds in the) 72 458.33 P
5 F
-1.11 (SafeAccount) 128.94 458.33 P
4 F
-0.52 (.  The default value for the) 194.9 458.33 P
5 F
-1.11 (backup) 316.98 458.33 P
4 F
-0.52 ( is the prototypical empty) 352.96 458.33 P
5 F
-1.11 (BankAccount) 471.26 458.33 P
4 F
-0.52 (.) 537.22 458.33 P
(A new) 72 438.33 T
5 F
(SafeAccount) 103.65 438.33 T
4 F
( may be created as follows:) 169.62 438.33 T
5 F
(\050new SafeAccount 1000.00 \050new BankAccount 2500.00\051\051) 108 413.33 T
4 F
0.69 (It might be nice to be able to retrieve the current) 72 393.33 P
5 F
1.48 (balance) 307.98 393.33 P
4 F
0.69 ( from the account.  This behavior can be) 349.95 393.33 P
(added by:) 72 373.33 T
5 F
(\050defOprn enquire\051) 108 348.33 T
(\050defPure BankAccount \050enquire\051 balance\051) 108 328.33 T
4 F
0.66 (and of course the method for) 72 308.33 P
5 F
1.41 (enquire) 210.3 308.33 P
4 F
0.66 ( will be inherited by) 252.28 308.33 P
5 F
1.41 (SafeAccounts) 350.71 308.33 P
4 F
0.66 ( as well.  Occasionally, it) 422.67 308.33 P
0.42 (may be useful to add several new slots to a shared behavior object at once.  This is supported by the) 72 288.33 P
(following form.) 72 268.34 T
5 F
(\050defSlots) 72 243.34 T
6 F
(\341) 131.97 243.34 T
2 F
(expr) 135.26 243.34 T
6 F
(\361) 153.01 243.34 T
5 F
( \050sbo&) 156.3 243.34 T
6 F
(\341) 198.28 243.34 T
2 F
(expr) 201.57 243.34 T
6 F
(\361) 219.33 243.34 T
5 F
(\325\051) 222.62 243.34 T
6 F
(\341) 240.61 243.34 T
2 F
(form) 243.9 243.34 T
6 F
(\361) 262.77 243.34 T
(\274) 272.06 243.34 T
5 F
(\051) 282.05 243.34 T
1 F
(derived syntax) 481.43 243.34 T
4 F
-0.69 (The) 72 223.34 P
6 F
-0.62 (\341) 91.86 223.34 P
7 F
-0.69 (expr) 95.15 223.34 P
6 F
-0.62 (\361) 114.75 223.34 P
4 F
-0.69 ( will typically evaluate to a prototype and the optional) 118.04 223.34 P
5 F
-1.49 (\050sbo&) 364.01 223.34 P
6 F
-0.62 (\341) 398.5 223.34 P
7 F
-0.69 (expr) 401.79 223.34 P
6 F
-0.62 (\361) 421.4 223.34 P
5 F
-1.49 (\325\051) 424.69 223.34 P
4 F
-0.69 ( clause will be omitted.) 436.68 223.34 P
0.12 (In this case, the new slots are added to the object that results from) 72 203.34 P
5 F
0.26 (\050sbo) 384.49 203.34 P
6 F
0.11 (\341) 414.74 203.34 P
7 F
0.12 (expr) 418.03 203.34 P
6 F
0.11 (\361) 437.64 203.34 P
5 F
0.26 (\051) 440.92 203.34 P
4 F
0.12 (.  The) 446.92 203.34 P
6 F
0.11 (\341) 476.17 203.34 P
7 F
0.12 (form) 479.46 203.34 P
6 F
0.11 (\361) 501.11 203.34 P
4 F
0.12 (s are as) 504.39 203.34 P
(described above for) 72 183.34 T
5 F
(defActor) 163.25 183.34 T
4 F
(.) 211.22 183.34 T
558 180 562 190 R
V
FMENDPAGE
%%EndPage: "31" 30
%%Page: "30" 30
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(30) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 12 Q
0 X
(6.3.) 72 712 T
(Defining actors and objects) 108 712 T
5 10 Q
(\050defActor) 72 693.33 T
6 F
(\341) 131.97 693.33 T
2 F
(id) 135.26 693.33 T
6 F
(\361) 143.03 693.33 T
5 F
( \050extends&) 146.32 693.33 T
6 F
(\341) 212.28 693.33 T
2 F
(expr) 215.57 693.33 T
6 F
(\361) 233.33 693.33 T
5 F
(\051 \050slots&) 236.62 693.33 T
6 F
(\341) 296.59 693.33 T
2 F
(id) 299.88 693.33 T
6 F
(\361) 307.65 693.33 T
1 8 Q
(1) 310.94 689.33 T
6 10 Q
(\341) 320.93 693.33 T
2 F
(expr) 324.22 693.33 T
6 F
(\361) 341.98 693.33 T
1 8 Q
(1) 345.27 689.33 T
6 10 Q
(\274) 355.26 693.33 T
5 F
(\051) 365.26 693.33 T
6 F
(\341) 377.25 693.33 T
2 F
(form) 380.54 693.33 T
6 F
(\361) 399.42 693.33 T
(\274) 408.7 693.33 T
5 F
(\051) 418.7 693.33 T
1 F
(derived syntax) 481.43 693.33 T
4 F
0.13 (This form is the principal means of introducing new kinds of actors into the environment.  The) 72 660 P
6 F
0.12 (\341) 513.3 660 P
7 F
0.13 (id) 516.59 660 P
6 F
0.12 (\361) 526.03 660 P
4 F
0.13 ( is) 529.31 660 P
0.47 (bound to the prototypical actor in the) 72 640 P
5 F
1.02 (Global) 250.05 640 P
4 F
0.47 ( environment, and will also be returned in response to) 286.03 640 P
0.03 (the) 72 620 P
5 F
0.07 (kind) 89.8 620 P
4 F
0.03 ( operation.  If the optional) 113.79 620 P
5 F
0.07 (\050extends&) 237.25 620 P
6 F
0.03 (\341) 297.29 620 P
7 F
0.03 (expr) 300.58 620 P
6 F
0.03 (\361) 320.18 620 P
5 F
0.07 (\051) 323.47 620 P
4 F
0.03 ( is supplied, then the new prototype will have) 329.47 620 P
-0.47 (at least the slots defined by the entity that results from) 72 600 P
6 F
-0.42 (\341) 325.67 600 P
7 F
-0.47 (expr) 328.96 600 P
6 F
-0.42 (\361) 348.57 600 P
4 F
-0.47 (; otherwise, the prototypical empty object) 351.86 600 P
0.64 (is extended which has) 72 580 P
5 F
1.38 (Top) 179.14 580 P
4 F
0.64 ( as its shared behavior object.  The clause) 197.13 580 P
5 F
1.38 (\050slots&) 397.62 580 P
6 F
0.57 (\341) 446.98 580 P
7 F
0.64 (id) 450.26 580 P
6 F
0.57 (\361) 459.7 580 P
4 8 Q
0.51 (1) 462.99 576 P
6 10 Q
0.57 (\341) 474.81 580 P
7 F
0.64 (expr) 478.1 580 P
6 F
0.57 (\361) 497.7 580 P
4 8 Q
0.51 (1) 500.99 576 P
6 10 Q
0.57 (\274) 512.82 580 P
5 F
1.38 (\051) 522.81 580 P
4 F
0.64 ( is) 528.81 580 P
-0.2 (optional and if present serves to define slots and default values in addition to those in the entity being) 72 556.67 P
0.34 (extended.  The) 72 536.67 P
6 F
0.31 (\341) 143.74 536.67 P
7 F
0.34 (form) 147.03 536.67 P
6 F
0.31 (\361) 168.68 536.67 P
4 F
0.34 (s, if present provide initial bindings for methods, procedures, and values in the) 171.97 536.67 P
-0.07 (shared behavior object that is created for the new prototype.  The) 72 516.67 P
6 F
-0.07 (\341) 375.41 516.67 P
7 F
-0.07 (form) 378.7 516.67 P
6 F
-0.07 (\361) 400.35 516.67 P
4 F
-0.07 (s may be any of the following:) 403.64 516.67 P
5 F
(\050method \050) 72 491.67 T
6 F
(\341) 125.97 491.67 T
2 F
(oprn) 129.26 491.67 T
6 F
(\361) 148.14 491.67 T
(\341) 157.42 491.67 T
2 F
(pattern) 160.71 491.67 T
6 F
(\361) 189.59 491.67 T
5 F
(\051) 192.87 491.67 T
6 F
(\341) 204.87 491.67 T
2 F
(body) 208.15 491.67 T
6 F
(\361) 227.58 491.67 T
5 F
(\051) 230.87 491.67 T
1 F
(derived syntax) 481.43 491.67 T
5 F
(\050pure   \050) 72 481.67 T
6 F
(\341) 125.97 481.67 T
2 F
(oprn) 129.26 481.67 T
6 F
(\361) 148.14 481.67 T
(\341) 157.42 481.67 T
2 F
(pattern) 160.71 481.67 T
6 F
(\361) 189.59 481.67 T
5 F
(\051) 192.87 481.67 T
6 F
(\341) 204.87 481.67 T
2 F
(body) 208.15 481.67 T
6 F
(\361) 227.58 481.67 T
5 F
(\051) 230.87 481.67 T
1 F
(derived syntax) 481.43 481.67 T
5 F
(\050local  \050) 72 471.67 T
6 F
(\341) 125.97 471.67 T
2 F
(id) 129.26 471.67 T
6 F
(\361) 137.03 471.67 T
(\341) 146.32 471.67 T
2 F
(pattern) 149.61 471.67 T
6 F
(\361) 178.48 471.67 T
5 F
(\051) 181.77 471.67 T
6 F
(\341) 205.76 471.67 T
2 F
(body) 209.04 471.67 T
6 F
(\361) 228.47 471.67 T
5 F
(\051) 231.76 471.67 T
1 F
(derived syntax) 481.43 471.67 T
5 F
(\050proc   \050) 72 461.67 T
6 F
(\341) 125.97 461.67 T
2 F
(id) 129.26 461.67 T
6 F
(\361) 137.03 461.67 T
(\341) 146.32 461.67 T
2 F
(pattern) 149.61 461.67 T
6 F
(\361) 178.48 461.67 T
5 F
(\051) 181.77 461.67 T
6 F
(\341) 205.76 461.67 T
2 F
(body) 209.04 461.67 T
6 F
(\361) 228.47 461.67 T
5 F
(\051) 231.76 461.67 T
1 F
(derived syntax) 481.43 461.67 T
5 F
(\050value) 72 451.67 T
6 F
(\341) 119.97 451.67 T
2 F
(id) 123.26 451.67 T
6 F
(\361) 131.04 451.67 T
(\341) 206.29 451.67 T
2 F
(expr) 209.57 451.67 T
6 F
(\361) 227.34 451.67 T
5 F
(\051) 230.62 451.67 T
1 F
(derived syntax) 481.43 451.67 T
5 F
(\050slot) 72 441.67 T
6 F
(\341) 119.97 441.67 T
2 F
(expr) 123.26 441.67 T
6 F
(\361) 141.02 441.67 T
(\341) 206.28 441.67 T
2 F
(expr) 207.57 441.67 T
6 F
(\361) 225.33 441.67 T
5 F
(\325\051) 228.61 441.67 T
1 F
(derived syntax) 481.43 441.67 T
4 F
0.1 (The first four forms correspond to the defining forms of the previous section.  The) 72 421.67 P
5 F
0.23 (value) 451.69 421.67 P
4 F
0.1 ( form simply) 481.67 421.67 P
-0.38 (adds a slot with) 72 401.67 P
6 F
-0.34 (\341) 146.38 401.67 P
7 F
-0.38 (id) 149.66 401.67 P
6 F
-0.34 (\361) 159.1 401.67 P
4 F
-0.38 ( bound to the value of the) 162.39 401.67 P
6 F
-0.34 (\341) 280.03 401.67 P
7 F
-0.38 (expr) 283.32 401.67 P
6 F
-0.34 (\361) 302.92 401.67 P
4 F
-0.38 (, and) 306.21 401.67 P
5 F
-0.83 (slot) 331.18 401.67 P
4 F
-0.38 ( permits an arbitrary value to be the key) 355.17 401.67 P
(determined as the value of) 72 381.67 T
6 F
(\341) 197.5 381.67 T
7 F
(expr) 200.79 381.67 T
6 F
(\361) 220.4 381.67 T
4 F
( to be bound to the value of) 223.69 381.67 T
6 F
(\341) 351.24 381.67 T
7 F
(expr) 354.52 381.67 T
6 F
(\361) 374.13 381.67 T
5 F
(\325) 377.42 381.67 T
4 F
(.) 383.42 381.67 T
(A simple bank-account actor may be defined as follows:) 90 356.67 T
5 F
(\050defOprn withdraw\051) 108 331.67 T
(\050defOprn deposit\051) 108 321.67 T
(\050defActor BankAccount \050slots& balance 0\051) 108 301.67 T
(  \050method \050withdraw amount\051) 108 291.67 T
(    \050cond \050\050<= amount balance\051) 108 281.67 T
(           \050update balance \050- balance amount\051\051) 108 271.67 T
(           [\325withdrew amount]\051) 108 261.67 T
(          \050\050> amount balance\051) 108 251.67 T
(           \050update\051) 108 241.67 T
(           [\325overdraft \050- amount balance\051]\051\051\051) 108 231.67 T
(  \050method \050deposit amount\051) 108 221.67 T
(    \050update balance \050+ balance amount\051\051) 108 211.67 T
(    [\325deposited amount]\051\051) 108 201.67 T
4 F
-0.16 (This defines two operations to be used to manipulate bank accounts and defines the prototypical bank) 72 181.67 P
0.52 (account and an associated shared behavior object in which the methods for) 72 161.67 P
5 F
1.12 (withdraw) 426.05 161.67 P
4 F
0.52 ( and) 474.02 161.67 P
5 F
1.12 (deposit) 498.02 161.67 P
4 F
0.13 (are stored.  The prototypical bank account has a) 72 141.67 P
5 F
0.28 (balance) 298.27 141.67 P
4 F
0.13 ( of) 340.25 141.67 P
5 F
0.28 (0) 354.39 141.67 P
4 F
0.13 (.  A new) 360.39 141.67 P
5 F
0.28 (BankAccount) 400.89 141.67 P
4 F
0.13 ( may be created) 466.86 141.67 P
(by:) 72 121.67 T
5 F
(\050define my-account \050new BankAccount 1000.00\051\051) 108 96.67 T
4 F
(Requests may be issued to the new account by using the operations that were defined above:) 72 76.67 T
558 636.67 562 686.67 R
V
FMENDPAGE
%%EndPage: "30" 29
%%Page: "29" 29
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(29) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 54 540 720 R
V
5 F
0 X
(\050defMethod) 72 713.33 T
6 F
(\341) 137.96 713.33 T
2 F
(expr) 141.25 713.33 T
6 F
(\361) 159.01 713.33 T
5 F
( \050) 162.3 713.33 T
6 F
(\341) 174.29 713.33 T
2 F
(oprn) 177.58 713.33 T
6 F
(\361) 196.46 713.33 T
(\341) 205.75 713.33 T
2 F
(pattern) 209.04 713.33 T
6 F
(\361) 237.91 713.33 T
5 F
(\051) 241.2 713.33 T
6 F
(\341) 253.19 713.33 T
2 F
(body) 256.48 713.33 T
6 F
(\361) 275.91 713.33 T
5 F
(\051) 279.2 713.33 T
6 F
(\336) 291.19 713.33 T
(\341) 307.05 713.33 T
2 F
(oprn) 310.34 713.33 T
6 F
(\361) 329.22 713.33 T
1 F
(derived syntax) 481.43 713.33 T
5 F
(\050defPure) 72 703.33 T
6 F
(\341) 137.96 703.33 T
2 F
(expr) 141.25 703.33 T
6 F
(\361) 159.01 703.33 T
5 F
( \050) 162.3 703.33 T
6 F
(\341) 174.29 703.33 T
2 F
(oprn) 177.58 703.33 T
6 F
(\361) 196.46 703.33 T
(\341) 205.75 703.33 T
2 F
(pattern) 209.04 703.33 T
6 F
(\361) 237.91 703.33 T
5 F
(\051) 241.2 703.33 T
6 F
(\341) 253.19 703.33 T
2 F
(body) 256.48 703.33 T
6 F
(\361) 275.91 703.33 T
5 F
(\051) 279.2 703.33 T
6 F
(\336) 291.19 703.33 T
(\341) 307.05 703.33 T
2 F
(oprn) 310.34 703.33 T
6 F
(\361) 329.22 703.33 T
1 F
(derived syntax) 481.43 703.33 T
5 F
(\050defLocal) 72 693.33 T
6 F
(\341) 137.96 693.33 T
2 F
(expr) 141.25 693.33 T
6 F
(\361) 159.01 693.33 T
5 F
( \050) 162.3 693.33 T
6 F
(\341) 174.29 693.33 T
2 F
(id) 177.58 693.33 T
6 F
(\361) 185.36 693.33 T
(\341) 194.64 693.33 T
2 F
(pattern) 197.93 693.33 T
6 F
(\361) 226.8 693.33 T
5 F
(\051) 230.09 693.33 T
6 F
(\341) 242.09 693.33 T
2 F
(body) 245.38 693.33 T
6 F
(\361) 264.8 693.33 T
5 F
(\051) 268.09 693.33 T
6 F
(\336) 292.08 693.33 T
5 F
( \325) 301.94 693.33 T
6 F
(\341) 313.94 693.33 T
2 F
(id) 317.23 693.33 T
6 F
(\361) 325 693.33 T
1 F
(derived syntax) 481.43 693.33 T
4 F
-0.49 (These three forms are used to add method slots to the shared behavior object associated with an entity.) 72 673.33 P
-0.36 (The entity is determined as the result of evaluating the) 72 653.33 P
6 F
-0.32 (\341) 326.99 653.33 P
7 F
-0.36 (expr) 330.27 653.33 P
6 F
-0.32 (\361) 349.88 653.33 P
4 F
-0.36 (.  The methods are compiled with respect) 353.17 653.33 P
0.02 (to this entity and then bound to either the) 72 633.33 P
6 F
0.02 (\341) 269.7 633.33 P
7 F
0.02 (oprn) 272.99 633.33 P
6 F
0.02 (\361) 294.27 633.33 P
4 F
0.02 ( or) 297.56 633.33 P
6 F
0.02 (\341) 312.59 633.33 P
7 F
0.02 (id) 315.88 633.33 P
6 F
0.02 (\361) 325.31 633.33 P
4 F
0.02 ( in the object identified by) 328.6 633.33 P
5 F
0.05 (\050sbo) 451.64 633.33 P
6 F
0.02 (\341) 481.67 633.33 P
7 F
0.02 (expr) 484.96 633.33 P
6 F
0.02 (\361) 504.57 633.33 P
5 F
0.05 (\051) 507.86 633.33 P
4 F
0.02 (.  The) 513.85 633.33 P
5 F
-0.12 (defMethod) 72 613.33 P
4 F
-0.06 ( form corresponds to the) 125.97 613.33 P
5 F
-0.12 (method) 240.25 613.33 P
4 F
-0.06 ( expression above, and the) 276.23 613.33 P
5 F
-0.12 (defPure) 400.53 613.33 P
4 F
-0.06 ( to) 442.51 613.33 P
5 F
-0.12 (pure) 456.84 613.33 P
4 F
-0.06 ( expressions.) 480.83 613.33 P
-0.05 (In these two forms,) 72 593.33 P
6 F
-0.05 (\341) 163.41 593.33 P
7 F
-0.05 (oprn) 166.7 593.33 P
6 F
-0.05 (\361) 187.98 593.33 P
4 F
-0.05 ( should be an expression that evaluates to an) 191.26 593.33 P
5 F
-0.11 (Operation) 402.02 593.33 P
4 F
-0.05 (.  These two forms) 455.99 593.33 P
0.29 (are conventionally used to introduce methods that correspond to messages that are sent by clients of) 72 573.33 P
0.54 (an entity.  The form) 72 553.33 P
5 F
1.17 (defLocal) 169.85 553.33 P
4 F
0.54 ( binds the resulting method object to the identifier) 217.83 553.33 P
6 F
0.49 (\341) 457.96 553.33 P
7 F
0.54 (id) 461.25 553.33 P
6 F
0.49 (\361) 470.68 553.33 P
4 F
0.54 (.  This form is) 473.97 553.33 P
-0.08 (conventionally used to introduce methods that are used locally by an actor or object and are not avail-) 72 533.33 P
0.35 (able to their clients.  Local methods are principally a device to promote modularity and reuse within) 72 513.33 P
(the definition of an actor or object.) 72 493.33 T
5 F
(\050defOprn) 72 468.33 T
6 F
(\341) 125.97 468.33 T
2 F
(id) 129.26 468.33 T
6 F
(\361) 137.03 468.33 T
5 F
( & \050sbo&) 140.32 468.33 T
6 F
(\341) 194.29 468.33 T
2 F
(expr) 197.58 468.33 T
6 F
(\361) 215.34 468.33 T
5 F
(\051) 218.63 468.33 T
6 F
(\341) 230.62 468.33 T
2 F
(expr) 233.91 468.33 T
6 F
(\361) 251.67 468.33 T
5 F
(\325\051) 254.96 468.33 T
6 F
(\336) 272.95 468.33 T
5 F
( \325) 282.81 468.33 T
6 F
(\341) 294.81 468.33 T
2 F
(id) 298.1 468.33 T
6 F
(\361) 305.87 468.33 T
1 F
(derived syntax) 481.43 468.33 T
5 F
(\050defOprn \050) 72 458.33 T
6 F
(\341) 131.97 458.33 T
2 F
(id) 135.26 458.33 T
6 F
(\361) 143.03 458.33 T
(\341) 152.32 458.33 T
2 F
(pattern) 155.6 458.33 T
6 F
(\361) 184.48 458.33 T
5 F
(\051) 187.77 458.33 T
6 F
(\341) 199.76 458.33 T
2 F
(body) 203.05 458.33 T
6 F
(\361) 222.48 458.33 T
5 F
( & \050sbo&) 225.76 458.33 T
6 F
(\341) 279.74 458.33 T
2 F
(expr) 283.02 458.33 T
6 F
(\361) 300.78 458.33 T
5 F
(\051 pure&\051) 304.07 458.33 T
6 F
(\336) 358.04 458.33 T
5 F
( \325) 367.91 458.33 T
6 F
(\341) 379.9 458.33 T
2 F
(id) 383.19 458.33 T
6 F
(\361) 390.96 458.33 T
1 F
(derived syntax) 481.43 458.33 T
5 F
(\050defSync) 72 448.33 T
6 F
(\341) 125.97 448.33 T
2 F
(id) 129.26 448.33 T
6 F
(\361) 137.03 448.33 T
5 F
( & \050sbo&) 140.32 448.33 T
6 F
(\341) 194.29 448.33 T
2 F
(expr) 197.58 448.33 T
6 F
(\361) 215.34 448.33 T
5 F
(\051) 218.63 448.33 T
6 F
(\341) 230.62 448.33 T
2 F
(expr) 233.91 448.33 T
6 F
(\361) 251.67 448.33 T
5 F
(\325\051) 254.96 448.33 T
6 F
(\336) 272.95 448.33 T
5 F
( \325) 282.81 448.33 T
6 F
(\341) 294.81 448.33 T
2 F
(id) 298.1 448.33 T
6 F
(\361) 305.87 448.33 T
1 F
(derived syntax) 481.43 448.33 T
5 F
(\050defSync \050) 72 438.33 T
6 F
(\341) 131.97 438.33 T
2 F
(id) 135.26 438.33 T
6 F
(\361) 143.03 438.33 T
(\341) 152.32 438.33 T
2 F
(pattern) 155.6 438.33 T
6 F
(\361) 184.48 438.33 T
5 F
(\051) 187.77 438.33 T
6 F
(\341) 199.76 438.33 T
2 F
(body) 203.05 438.33 T
6 F
(\361) 222.48 438.33 T
5 F
( & \050sbo&) 225.76 438.33 T
6 F
(\341) 279.74 438.33 T
2 F
(expr) 283.02 438.33 T
6 F
(\361) 300.78 438.33 T
5 F
(\051 pure&\051) 304.07 438.33 T
6 F
(\336) 358.04 438.33 T
5 F
( \325) 367.91 438.33 T
6 F
(\341) 379.9 438.33 T
2 F
(id) 383.19 438.33 T
6 F
(\361) 390.96 438.33 T
1 F
(derived syntax) 481.43 438.33 T
4 F
0.04 (These forms introduce new operations into the environment and allow for the initial binding of meth-) 72 418.33 P
-0.22 (ods or other values to the new operation.  Often these initial bindings represent the \322default\323 behavior) 72 398.33 P
-0.34 (or value of the operation and are placed in the) 72 378.33 P
5 F
-0.73 (Top) 284.45 378.33 P
4 F
-0.34 ( environment.  This is accomplished by simply omit-) 302.44 378.33 P
0.63 (ting the) 72 358.33 P
5 F
1.36 (\050sbo&) 112.32 358.33 P
6 F
0.56 (\341) 149.65 358.33 P
7 F
0.63 (expr) 152.94 358.33 P
6 F
0.56 (\361) 172.55 358.33 P
5 F
1.36 (\051) 175.84 358.33 P
4 F
0.63 ( clause.  The forms with just an) 181.83 358.33 P
6 F
0.56 (\341) 334.95 358.33 P
7 F
0.63 (id) 338.24 358.33 P
6 F
0.56 (\361) 347.67 358.33 P
4 F
0.63 ( and no) 350.96 358.33 P
6 F
0.56 (\341) 389.69 358.33 P
7 F
0.63 (pattern) 392.98 358.33 P
6 F
0.56 (\361) 426.47 358.33 P
4 F
0.63 ( define a new operation) 429.76 358.33 P
0.25 (without any default or with default as determined by the result of evaluating) 72 338.33 P
6 F
0.23 (\341) 434.05 338.33 P
7 F
0.25 (expr) 437.34 338.33 P
6 F
0.23 (\361) 456.95 338.33 P
5 F
0.55 (\325) 460.23 338.33 P
4 F
0.25 (.  The other two) 466.23 338.33 P
-0.24 (forms provide for the association of methods, and follow the same basic syntax of) 72 318.33 P
5 F
-0.52 (defMethod) 443.81 318.33 P
4 F
-0.24 (.  The op-) 497.78 318.33 P
(tional flag) 72 298.33 T
5 F
(pure&) 121.8 298.33 T
4 F
( may be used to indicate that the method is to be wrapped with an) 151.79 298.33 T
5 F
(\050update\051) 460.02 298.33 T
4 F
(.) 507.99 298.33 T
5 F
(\050defOprn foo\051) 108 273.33 T
6 F
(\336) 360 273.33 T
5 F
( \325foo) 369.86 273.33 T
(\050defOprn kind \325?\051) 108 263.33 T
6 F
(\336) 360 263.33 T
5 F
( \325kind) 369.86 263.33 T
(\050defSync \050examine\051) 108 253.33 T
(  \050examine! \050meta \050self\051\051 \050self\051 stdout\051) 108 243.33 T
6 F
(\336) 360 243.33 T
5 F
( \325examine) 369.86 243.33 T
4 F
0.42 (The first example simply creates a new) 72 223.33 P
5 F
0.9 (Oprn) 258.55 223.33 P
4 F
0.42 ( and binds it to) 282.54 223.33 P
5 F
0.9 (\325foo) 357.02 223.33 P
4 F
0.42 ( in the) 381.01 223.33 P
5 F
0.9 (Global) 414.84 223.33 P
4 F
0.42 ( environment.  The) 450.82 223.33 P
-0.65 (second example creates a new operation bound to) 72 203.33 P
5 F
-1.4 (\325kind) 297.27 203.33 P
4 F
-0.65 ( in the) 327.25 203.33 P
5 F
-1.4 (Global) 357.88 203.33 P
4 F
-0.65 ( environment and binds the new) 393.86 203.33 P
0.1 (operation to the symbol) 72 183.33 P
5 F
0.21 (\325?) 183.83 183.33 P
4 F
0.1 ( in the) 195.82 183.33 P
5 F
0.21 (Top) 228.7 183.33 P
4 F
0.1 ( environment.  The last example creates a) 246.69 183.33 P
5 F
0.21 (SyncOprn) 443.7 183.33 P
4 F
0.1 ( and binds) 491.67 183.33 P
(the new operation to the following method in the) 72 163.33 T
5 F
(Top) 299.49 163.33 T
4 F
( environment:) 317.48 163.33 T
5 F
(\050method [] \050examine! \050meta \050self\051\051 \050self\051 stdout\051\051) 108 138.33 T
4 F
0.22 (The) 72 118.33 P
5 F
0.47 (defOprn) 92.77 118.33 P
4 F
0.22 ( and) 134.75 118.33 P
5 F
0.47 (defSync) 158.14 118.33 P
4 F
0.22 ( forms check to see whether the) 200.12 118.33 P
6 F
0.2 (\341) 350.1 118.33 P
7 F
0.22 (id) 353.39 118.33 P
6 F
0.2 (\361) 362.82 118.33 P
4 F
0.22 ( is already bound to an operation and) 366.11 118.33 P
0.34 (if so do not actually create a new operation but simply retain the current one, possibly adding a new) 72 98.33 P
(binding for the operation.) 72 78.33 T
FMENDPAGE
%%EndPage: "29" 28
%%Page: "28" 28
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(28) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 12 Q
0 X
(6.2.) 72 712 T
(Procedures, Methods, and Operations) 108 712 T
5 10 Q
(\050proc) 72 693.33 T
6 F
(\341) 107.98 693.33 T
2 F
(pattern) 111.27 693.33 T
6 F
(\361) 140.14 693.33 T
(\341) 148.43 693.33 T
2 F
(body) 151.72 693.33 T
6 F
(\361) 171.15 693.33 T
5 F
(\051) 174.43 693.33 T
1 F
(special form) 490.32 693.33 T
4 F
-0.02 (The) 72 673.33 P
5 F
-0.05 (proc) 92.53 673.33 P
4 F
-0.02 ( expression evaluates to \050i.e., creates\051 an anonymous procedure object.  When a) 116.51 673.33 P
5 F
-0.05 (proc) 483.1 673.33 P
4 F
-0.02 ( is sent) 507.09 673.33 P
0.44 (a message that matches) 72 653.33 P
6 F
0.4 (\341) 187.43 653.33 P
7 F
0.44 (pattern) 190.72 653.33 P
6 F
0.4 (\361) 224.21 653.33 P
4 F
0.44 (, it evaluates the) 227.5 653.33 P
6 F
0.4 (\341) 309.43 653.33 P
7 F
0.44 (body) 312.72 653.33 P
6 F
0.4 (\361) 334.38 653.33 P
4 F
0.44 ( of the) 337.67 653.33 P
5 F
0.95 (proc) 370.64 653.33 P
4 F
0.44 (.  The) 394.63 653.33 P
6 F
0.4 (\341) 424.84 653.33 P
7 F
0.44 (body) 428.12 653.33 P
6 F
0.4 (\361) 449.78 653.33 P
4 F
0.44 ( is evaluated in an) 453.07 653.33 P
1.04 (environment that is extended with the bindings resulting from matching the) 72 633.33 P
6 F
0.94 (\341) 439.79 633.33 P
7 F
1.04 (pattern) 443.08 633.33 P
6 F
0.94 (\361) 476.57 633.33 P
4 F
1.04 ( with the re-) 479.86 633.33 P
-0.36 (ceived message.  The environment in effect at the point that the) 72 613.33 P
5 F
-0.78 (proc) 365.3 613.33 P
4 F
-0.36 ( expression is evaluated is stored) 389.29 613.33 P
-0.54 (in a slot in the resulting procedure object.  Procedure objects are always ready to receive a message and) 72 593.33 P
-0.09 (behave like the procedures that result from evaluating a) 72 573.33 P
5 F
-0.19 (lambda) 334.61 573.33 P
4 F
-0.09 ( expression in Scheme.  The) 370.59 573.33 P
6 F
-0.08 (\341) 501.3 573.33 P
7 F
-0.09 (body) 504.59 573.33 P
6 F
-0.08 (\361) 526.25 573.33 P
4 F
-0.09 ( is) 529.53 573.33 P
(an implicit block construct.) 72 553.33 T
5 F
(\050proc [x] \050+ x x\051\051) 108 528.33 T
6 F
(\336) 360 528.33 T
5 F
( {Proc instance}) 369.86 528.33 T
(\050\050proc [x] \050+ x x\051\051 4\051) 108 518.33 T
6 F
(\336) 360 518.33 T
5 F
( 8) 369.86 518.33 T
(\050define twice) 108 508.33 T
6 F
(\336) 360 508.33 T
5 F
( \325twice) 369.86 508.33 T
(  \050proc [n] \050+ n n\051\051) 108 498.33 T
(\050twice 4\051) 108 488.33 T
6 F
(\336) 360 488.33 T
5 F
( 8) 369.86 488.33 T
(\050defProc \050) 72 468.33 T
6 F
(\341) 131.97 468.33 T
2 F
(id) 135.26 468.33 T
6 F
(\361) 143.03 468.33 T
(\341) 152.32 468.33 T
2 F
(pattern) 155.6 468.33 T
6 F
(\361) 184.48 468.33 T
5 F
(\051 \050sbo&) 187.77 468.33 T
6 F
(\341) 235.74 468.33 T
2 F
(expr) 239.03 468.33 T
6 F
(\361) 256.79 468.33 T
5 F
(\051) 260.08 468.33 T
6 F
(\341) 272.07 468.33 T
2 F
(body) 275.36 468.33 T
6 F
(\361) 294.79 468.33 T
5 F
(\051) 298.08 468.33 T
6 F
(\336) 310.07 468.33 T
5 F
( \325) 319.93 468.33 T
6 F
(\341) 331.93 468.33 T
2 F
(id) 335.21 468.33 T
6 F
(\361) 342.99 468.33 T
1 F
(derived syntax) 481.43 468.33 T
4 F
0.37 (The) 72 448.33 P
5 F
0.79 (defProc) 92.92 448.33 P
4 F
0.37 ( form defines) 134.89 448.33 P
6 F
0.33 (\341) 198.92 448.33 P
7 F
0.37 (id) 202.2 448.33 P
6 F
0.33 (\361) 211.64 448.33 P
4 F
0.37 ( to be a procedure object that accepts messages according to) 214.93 448.33 P
6 F
0.33 (\341) 497.15 448.33 P
7 F
0.37 (pattern) 500.44 448.33 P
6 F
0.33 (\361) 533.93 448.33 P
4 F
0.37 (.) 537.22 448.33 P
0.26 (The) 72 428.33 P
6 F
0.23 (\341) 92.81 428.33 P
7 F
0.26 (body) 96.09 428.33 P
6 F
0.23 (\361) 117.75 428.33 P
4 F
0.26 ( is an implicit block as with the) 121.04 428.33 P
5 F
0.56 (proc) 270.47 428.33 P
4 F
0.26 ( expression.  If the optional) 294.46 428.33 P
5 F
0.56 (sbo&) 424.46 428.33 P
4 F
0.26 ( is omitted then the) 448.45 428.33 P
0.19 (definition is made in the) 72 408.33 P
5 F
0.41 (Global) 188.65 408.33 P
4 F
0.19 ( environment; otherwise, the procedure object is bound to) 224.63 408.33 P
6 F
0.17 (\341) 493.8 408.33 P
7 F
0.19 (id) 497.09 408.33 P
6 F
0.17 (\361) 506.53 408.33 P
4 F
0.19 ( in the) 509.81 408.33 P
(object resulting from) 72 388.33 T
6 F
(\341) 170.65 388.33 T
7 F
(expr) 173.93 388.33 T
6 F
(\361) 193.54 388.33 T
4 F
(.  The familiar factorial may be expressed as follows:) 196.83 388.33 T
5 F
(\050defProc \050fact n\051) 108 363.33 T
(  \050if \050< n 2\051 1 \050* \050fact \050- n 1\051\051 n\051\051\051) 108 353.33 T
6 F
(\336) 360 353.33 T
5 F
( \325fact) 369.86 353.33 T
4 F
(Procedures defined using) 72 333.33 T
5 F
(defProc) 191.18 333.33 T
4 F
( may be recursive without any extra effort.) 233.16 333.33 T
5 F
(\050method) 72 308.33 T
6 F
(\341) 119.97 308.33 T
2 F
(pattern) 123.26 308.33 T
6 F
(\361) 152.14 308.33 T
(\341) 160.42 308.33 T
2 F
(body) 163.71 308.33 T
6 F
(\361) 183.14 308.33 T
5 F
(\051) 186.43 308.33 T
1 F
(special form) 490.32 308.33 T
5 F
(\050pure) 72 298.33 T
6 F
(\341) 107.98 298.33 T
2 F
(pattern) 111.27 298.33 T
6 F
(\361) 140.14 298.33 T
(\341) 148.43 298.33 T
2 F
(body) 151.72 298.33 T
6 F
(\361) 171.15 298.33 T
5 F
(\051) 174.43 298.33 T
1 F
(derived syntax) 481.43 298.33 T
4 F
0.65 (The) 72 278.33 P
5 F
1.41 (method) 93.2 278.33 P
4 F
0.65 ( expression evaluates to an anonymous method object.  The) 129.18 278.33 P
5 F
1.41 (pure) 412.07 278.33 P
4 F
0.65 ( expression simply ex-) 436.06 278.33 P
0.02 (pands to a) 72 258.33 P
5 F
0.05 (method) 122.61 258.33 P
4 F
0.02 ( expression which has the form) 158.59 258.33 P
5 F
0.05 (\050update\051) 304.93 258.33 P
4 F
0.02 ( added to unlock the entity immediately.) 352.91 258.33 P
-0.18 (This form is provided since it is quite common to have methods that are essentially functional.  In any) 72 238.33 P
1.48 (case the) 72 218.33 P
6 F
1.33 (\341) 115.12 218.33 P
7 F
1.48 (body) 118.41 218.33 P
6 F
1.33 (\361) 140.07 218.33 P
4 F
1.48 ( is evaluated in an environment that is extended with the bindings resulting from) 143.36 218.33 P
-0.58 (matching the) 72 198.33 P
6 F
-0.52 (\341) 134.88 198.33 P
7 F
-0.58 (pattern) 138.17 198.33 P
6 F
-0.52 (\361) 171.66 198.33 P
4 F
-0.58 ( with the received message.  The environment that is extended is that represent-) 174.95 198.33 P
0.07 (ing the entity that received the message that invoked the method.  The body of a) 72 178.33 P
5 F
0.15 (method) 447.62 178.33 P
4 F
0.07 ( \050or) 483.6 178.33 P
5 F
0.15 (pure) 502.06 178.33 P
4 F
0.07 (\051 is) 526.05 178.33 P
(an implicit block.) 72 158.33 T
FMENDPAGE
%%EndPage: "28" 27
%%Page: "27" 27
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(27) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 12 Q
0 X
(6.) 72 712 T
(Definitions) 90 712 T
4 10 Q
-0 (This section discusses defining forms.  The) 72 686.33 P
5 F
-0 (proc) 271.88 686.33 P
4 F
-0 (,) 295.87 686.33 P
5 F
-0 (method) 301.42 686.33 P
4 F
-0 (, and) 337.4 686.33 P
5 F
-0 (pure) 363.14 686.33 P
4 F
-0 ( expressions and related defining) 387.12 686.33 P
0.24 (forms are used to create objects that provide executable behavior.  The forms) 72 666.33 P
5 F
0.53 (defActor) 432.6 666.33 P
4 F
0.24 ( and) 480.57 666.33 P
5 F
0.53 (defOb-) 504.02 666.33 P
4.55 (ject) 72 646.33 P
4 F
2.11 ( are used to create new families of actors and objects.) 95.99 646.33 P
5 F
4.55 (defOprn) 371.91 646.33 P
4 F
2.11 ( and) 413.89 646.33 P
5 F
4.55 (defSync) 441.06 646.33 P
4 F
2.11 ( define new) 483.03 646.33 P
(operations.) 72 626.33 T
3 12 Q
(6.1.) 72 595 T
(Message patterns) 108 595 T
4 10 Q
-0.17 (In the following,) 72 576.33 P
6 F
-0.16 (\341) 149.77 576.33 P
7 F
-0.17 (pattern) 153.06 576.33 P
6 F
-0.16 (\361) 186.55 576.33 P
4 F
-0.17 ( is the form of messages that will be accepted by procedures or methods, and) 189.84 576.33 P
0.37 (specifies variables that will be \322bound\323 to portions of the received messages.  The) 72 556.33 P
6 F
0.33 (\341) 453.46 556.33 P
7 F
0.37 (pattern) 456.75 556.33 P
6 F
0.33 (\361) 490.24 556.33 P
4 F
0.37 ( may take) 493.53 556.33 P
(one of the following forms \050these apply to the following definition forms as well\051:) 72 536.33 T
1 F
(\245) 108 511.33 T
5 F
0.85 ([) 126 511.33 P
6 F
0.35 (\341) 132 511.33 P
2 F
0.35 (id) 135.29 511.33 P
6 F
0.35 (\361) 143.06 511.33 P
0.35 (\274) 153.19 511.33 P
5 F
0.85 (]) 163.18 511.33 P
1 F
0.35 (: Indicates that the actor accepts messages \050represented as tuples\051 with a fixed number \0500 or) 169.18 511.33 P
0.01 (more\051 of elements; when the actor receives a message, the elements of the message are bound in turn to) 126 491.33 P
-0.26 (the) 126 471.33 P
6 F
-0.26 (\341) 140.45 471.33 P
2 F
-0.26 (id) 143.74 471.33 P
6 F
-0.26 (\361) 151.51 471.33 P
1 F
-0.26 (s in the) 154.8 471.33 P
6 F
-0.26 (\341) 185.39 471.33 P
2 F
-0.26 (pattern) 188.68 471.33 P
6 F
-0.26 (\361) 217.55 471.33 P
1 F
-0.26 (.  Note that the list of) 220.84 471.33 P
6 F
-0.26 (\341) 306.19 471.33 P
2 F
-0.26 (id) 309.48 471.33 P
6 F
-0.26 (\361) 317.25 471.33 P
1 F
-0.26 ( may be empty in which case the actor is \322triggered\323 by) 320.54 471.33 P
(receipt of an empty message.) 126 451.33 T
5 F
(   \050\050proc [] 4\051\051) 108 426.33 T
6 F
(\336) 360 426.33 T
5 F
( 4) 369.86 426.33 T
1 F
(\245) 108 406.33 T
5 F
-0.13 ([) 126 406.33 P
6 F
-0.06 (\341) 132 406.33 P
2 F
-0.06 (id) 135.29 406.33 P
6 F
-0.06 (\361) 143.06 406.33 P
-0.06 (\274) 152.21 406.33 P
5 F
-0.13 ( &) 162.21 406.33 P
6 F
-0.06 (\341) 179.93 406.33 P
2 F
-0.06 (id) 183.21 406.33 P
6 F
-0.06 (\361) 190.99 406.33 P
5 F
-0.13 (]) 194.28 406.33 P
1 F
-0.06 (: Indicates that the actor accepts messages with at least as many elements as there are) 200.28 406.33 P
6 F
0.57 (\341) 126 386.33 P
2 F
0.57 (id) 129.29 386.33 P
6 F
0.57 (\361) 137.06 386.33 P
1 F
0.57 (s in the pattern preceding the) 140.35 386.33 P
5 F
1.36 (&) 261.99 386.33 P
1 F
0.57 (.  The) 267.99 386.33 P
6 F
0.57 (\341) 295.23 386.33 P
2 F
0.57 (id) 298.52 386.33 P
6 F
0.57 (\361) 306.29 386.33 P
1 F
0.57 ( following the) 309.58 386.33 P
5 F
1.36 (&) 369.86 386.33 P
1 F
0.57 ( is bound to a message \050possibly empty\051) 375.85 386.33 P
(containing the rest of the elements.) 126 366.33 T
5 F
(   \050\050proc [a b & r] r\051 1 2 3 4 5\051) 108 341.33 T
6 F
(\336) 360 341.33 T
5 F
( [3 4 5]) 369.86 341.33 T
1 F
(\245) 108 321.33 T
5 F
0.69 ([) 126 321.33 P
6 F
0.29 (\341) 132 321.33 P
2 F
0.29 (pattern) 135.29 321.33 P
6 F
0.29 (\361) 164.16 321.33 P
0.29 (\274) 174.13 321.33 P
5 F
0.69 (]) 184.13 321.33 P
1 F
0.29 (: Indicates that the actor accepts messages that have a fixed number of elements which) 190.13 321.33 P
1.4 (may in turn be messages.  The bindings are established by recursively \322destructuring\323 the received) 126 301.33 P
(message according to the patterns.) 126 281.33 T
5 F
(   \050\050proc [[a & r] [b & s]] [a b]\051 [1 2 3] [4 5 6]\051) 108 256.33 T
6 F
(\336) 413.83 256.33 T
5 F
( [1 4]) 423.7 256.33 T
1 F
(\245) 108 236.33 T
5 F
-0.87 ([) 126 236.33 P
6 F
-0.36 (\341) 132 236.33 P
2 F
-0.36 (pattern) 135.29 236.33 P
6 F
-0.36 (\361) 164.16 236.33 P
-0.36 (\274) 172.58 236.33 P
5 F
-0.87 ( &) 182.57 236.33 P
6 F
-0.36 (\341) 198.83 236.33 P
2 F
-0.36 (id) 202.12 236.33 P
6 F
-0.36 (\361) 209.9 236.33 P
5 F
-0.87 (]) 213.19 236.33 P
1 F
-0.36 (: Indicates that the actor accepts messages with at least as many elements as there) 219.18 236.33 P
1.07 (are) 126 216.33 P
6 F
1.07 (\341) 141.77 216.33 P
2 F
1.07 (pattern) 145.06 216.33 P
6 F
1.07 (\361) 173.93 216.33 P
1 F
1.07 (s preceding the) 177.22 216.33 P
5 F
2.56 (&) 243.42 216.33 P
1 F
1.07 (, with the remainder of the elements \050possibly none\051 bound to the) 249.42 216.33 P
6 F
1.07 (\341) 525.65 216.33 P
2 F
1.07 (id) 528.94 216.33 P
6 F
1.07 (\361) 536.71 216.33 P
1 F
(following the) 126 196.33 T
5 F
(&) 182.08 196.33 T
1 F
(.) 188.08 196.33 T
5 F
(   \050\050proc [[a b] & r] [a b r]\051) 108 171.34 T
(    [1 2] [3 4] [5 6]\051) 108 161.34 T
6 F
(\336) 360 161.34 T
5 F
([1 2 [[3 4] [5 6]]]) 375.86 161.34 T
4 F
1.37 (The identifiers occurring in a pattern must all be distinct, and a) 90 141.34 P
5 F
2.96 (formals-mismatch) 404.67 141.34 P
4 F
1.37 ( error is) 500.62 141.34 P
(raised if a message is sent to an entity that does not match its pattern.) 72 121.34 T
FMENDPAGE
%%EndPage: "27" 26
%%Page: "26" 26
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(26) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 12 Q
0 X
(5.5.) 72 712 T
(Miscellaneous forms) 108 712 T
4 10 Q
(This section covers the following forms:) 72 693.33 T
5 F
(free) 256.35 693.33 T
4 F
(,) 280.33 693.33 T
5 F
(goto) 285.89 693.33 T
4 F
(,) 309.88 693.33 T
5 F
(label) 315.44 693.33 T
4 F
(,) 345.42 693.33 T
5 F
(set!) 350.98 693.33 T
4 F
(, and) 374.96 693.33 T
5 F
(void) 400.7 693.33 T
4 F
(.) 424.69 693.33 T
5 F
(\050free [) 72 668.33 T
6 F
(\341) 113.98 668.33 T
2 F
(id) 117.26 668.33 T
6 F
(\361) 125.04 668.33 T
(\274) 134.33 668.33 T
5 F
(]) 144.32 668.33 T
6 F
(\341) 156.31 668.33 T
2 F
(body) 159.6 668.33 T
6 F
(\361) 179.03 668.33 T
5 F
(\051) 182.32 668.33 T
6 F
(\336) 194.31 668.33 T
2 F
(result of) 210.17 668.33 T
6 F
(\341) 245.71 668.33 T
2 F
(body) 249 668.33 T
6 F
(\361) 268.43 668.33 T
1 F
(special form) 490.32 668.33 T
4 F
-0.5 (The) 72 648.33 P
5 F
-1.08 (free) 92.05 648.33 P
4 F
-0.5 ( form informs the compiler that the) 116.04 648.33 P
6 F
-0.45 (\341) 278.38 648.33 P
7 F
-0.5 (id) 281.67 648.33 P
6 F
-0.45 (\361) 291.1 648.33 P
4 F
-0.5 ( are to be treated as free in) 294.39 648.33 P
6 F
-0.45 (\341) 417.76 648.33 P
7 F
-0.5 (body) 421.04 648.33 P
6 F
-0.45 (\361) 442.7 648.33 P
4 F
-0.5 (; otherwise, the com-) 445.99 648.33 P
0.3 (piler will issue warnings that the) 72 628.33 P
6 F
0.27 (\341) 230.23 628.33 P
7 F
0.3 (id) 233.52 628.33 P
6 F
0.27 (\361) 242.95 628.33 P
4 F
0.3 ( do not have a compile-time binding.  Sometimes this is exactly) 246.24 628.33 P
0.09 (what is desired.  For example, if one of the identifiers names an inherited slot holding a value shared) 72 608.33 P
0.19 (across all descendants of some entity or names a \322local\323 method that is inherited.  In other cases, the) 72 588.33 P
0.18 (warning indicates that an error has been made in defining the method or procedure.  Thus, it is good) 72 568.33 P
(form to use) 72 548.33 T
5 F
(free) 126.6 548.33 T
4 F
( to document the intent that the) 150.59 548.33 T
6 F
(\341) 301.63 548.33 T
7 F
(id) 304.92 548.33 T
6 F
(\361) 314.36 548.33 T
4 F
(s are to be looked up via inheritance.) 317.64 548.33 T
-0.43 (The next three forms are intended mainly for use in constructing the internals of forms such as the) 90 523.33 P
0.9 (iteration constructs in the previous section and other \322low-level\323 system code.  They are mentioned) 72 503.33 P
(here for completeness and may well be removed.) 72 483.33 T
5 F
(\050goto) 72 458.33 T
6 F
(\341) 107.98 458.33 T
2 F
(id) 111.27 458.33 T
6 F
(\361) 119.04 458.33 T
5 F
(\051) 122.33 458.33 T
6 F
(\336) 134.33 458.33 T
2 F
(no result) 150.19 458.33 T
1 F
(special form) 490.32 458.33 T
5 F
(\050label) 72 448.33 T
6 F
(\341) 113.98 448.33 T
2 F
(id) 117.26 448.33 T
6 F
(\361) 125.04 448.33 T
(\341) 134.33 448.33 T
2 F
(body) 137.61 448.33 T
6 F
(\361) 157.04 448.33 T
5 F
(\051) 160.33 448.33 T
6 F
(\336) 172.32 448.33 T
2 F
(result of) 188.19 448.33 T
6 F
(\341) 223.73 448.33 T
2 F
(body) 227.01 448.33 T
6 F
(\361) 246.44 448.33 T
1 F
(special form) 490.32 448.33 T
5 F
(\050set!) 72 438.33 T
6 F
(\341) 107.98 438.33 T
2 F
(id) 111.27 438.33 T
6 F
(\361) 119.04 438.33 T
(\341) 128.33 438.33 T
2 F
(expr) 131.62 438.33 T
6 F
(\361) 149.38 438.33 T
5 F
(\051) 152.67 438.33 T
6 F
(\336) 164.66 438.33 T
2 F
(any) 180.52 438.33 T
1 F
(special form) 490.32 438.33 T
4 F
1.31 (The) 72 418.33 P
5 F
2.83 (goto) 93.86 418.33 P
4 F
1.31 ( and) 117.85 418.33 P
5 F
2.83 (label) 143.42 418.33 P
4 F
1.31 ( forms provide a primitive looping construct.  Essentially, the) 173.41 418.33 P
5 F
2.83 (goto) 472.11 418.33 P
4 F
1.31 ( can only) 496.1 418.33 P
-0.38 (branch backward, forward branching is accomplished via) 72 398.33 P
5 F
-0.83 (if) 335.48 398.33 P
4 F
-0.38 (.  The) 347.47 398.33 P
5 F
-0.83 (set!) 375.2 398.33 P
4 F
-0.38 ( is a primitive assignment that) 399.19 398.33 P
(permits altering bindings in the lexical environment of a procedure or method.) 72 378.33 T
5 F
(\050void) 72 353.33 T
6 F
(\341) 107.98 353.33 T
2 F
(body) 111.27 353.33 T
6 F
(\361) 130.7 353.33 T
5 F
(\051) 133.99 353.33 T
6 F
(\336) 145.98 353.33 T
5 F
( #niv) 155.84 353.33 T
1 F
(derived syntax) 481.43 353.33 T
4 F
-0.17 (The) 72 333.33 P
5 F
-0.36 (void) 92.38 333.33 P
4 F
-0.17 ( form is provided as a convenient notation for indicating that a form is not really intended to) 116.37 333.33 P
0.14 (yield a result.  The compiler will issue a warning in those contexts that may be required to produce a) 72 313.33 P
0.34 (result, such as the body of a procedure or method.  The compiler is conservative since it can be quite) 72 293.33 P
0.56 (difficult to track down errors caused by a procedure or method not returning a result when one was) 72 273.33 P
0.12 (needed.  The usual symptom of such an error is that activity simply ceases much as when an actor or) 72 253.33 P
(object is not unlocked.  The) 72 233.33 T
5 F
(void) 200.28 233.33 T
4 F
( form expands as follows:) 224.27 233.33 T
5 F
(\050void) 108 208.33 T
6 F
(\341) 143.98 208.33 T
2 F
(body) 147.27 208.33 T
6 F
(\361) 166.7 208.33 T
5 F
(\051) 169.99 208.33 T
2 F
(expands to) 181.98 208.33 T
5 F
( \050block #niv) 225.01 208.33 T
6 F
(\341) 302.96 208.33 T
2 F
(body) 306.25 208.33 T
6 F
(\361) 325.68 208.33 T
5 F
(\051) 328.97 208.33 T
FMENDPAGE
%%EndPage: "26" 25
%%Page: "25" 25
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(25) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 12 Q
0 X
(5.4.) 72 712 T
(Iteration) 108 712 T
5 10 Q
(\050iterate) 72 693.33 T
6 F
(\341) 125.97 693.33 T
2 F
(id) 129.26 693.33 T
6 F
(\361) 137.03 693.33 T
5 F
( [[) 140.32 693.33 T
6 F
(\341) 158.31 693.33 T
2 F
(id) 161.6 693.33 T
6 F
(\361) 169.38 693.33 T
1 F
(1) 172.66 689.33 T
6 F
( \341) 177.66 693.33 T
2 F
(expr) 183.45 693.33 T
6 F
(\361) 201.21 693.33 T
1 F
(1) 204.5 689.33 T
5 F
(]) 209.49 693.33 T
6 F
(\274) 221.49 693.33 T
5 F
(]) 231.48 693.33 T
6 F
(\341) 243.48 693.33 T
2 F
(body) 246.76 693.33 T
6 F
(\361) 266.19 693.33 T
5 F
(\051) 269.48 693.33 T
6 F
(\336) 281.48 693.33 T
2 F
(any) 297.34 693.33 T
1 F
(derived syntax) 481.43 693.33 T
5 F
-0.2 (iterate) 72 669.33 P
4 F
-0.09 ( is one of the forms used to introduce loops in procedures and methods.  The) 113.98 669.33 P
6 F
-0.08 (\341) 465.12 669.33 P
7 F
-0.09 (id) 468.41 669.33 P
6 F
-0.08 (\361) 477.85 669.33 P
4 F
-0.09 ( becomes the) 481.13 669.33 P
0.98 (name for an implicit procedure that may be executed from within the) 72 649.33 P
6 F
0.88 (\341) 405.63 649.33 P
7 F
0.98 (body) 408.92 649.33 P
6 F
0.88 (\361) 430.57 649.33 P
4 F
0.98 ( in order to repeat the) 433.86 649.33 P
6 F
0.07 (\341) 72 629.33 P
7 F
0.08 (body) 75.29 629.33 P
6 F
0.07 (\361) 96.95 629.33 P
4 F
0.08 (.  The) 100.23 629.33 P
6 F
0.07 (\341) 129.35 629.33 P
7 F
0.08 (expr) 132.64 629.33 P
6 F
0.07 (\361) 152.25 629.33 P
4 F
0.08 (i) 155.54 625.33 P
0.08 ( are evaluated concurrently and bound to the) 158.69 629.33 P
6 F
0.07 (\341) 370.14 629.33 P
7 F
0.08 (id) 373.42 629.33 P
6 F
0.07 (\361) 382.86 629.33 P
4 F
0.08 (i) 386.15 625.33 P
0.08 ( initially and the) 389.29 629.33 P
6 F
0.07 (\341) 469.77 629.33 P
7 F
0.08 (body) 473.06 629.33 P
6 F
0.07 (\361) 494.72 629.33 P
4 F
0.08 ( is evalu-) 498.01 629.33 P
0.62 (ated in an environment that is extended with these bindings.  If the) 72 605.33 P
6 F
0.56 (\341) 395.92 605.33 P
7 F
0.62 (body) 399.2 605.33 P
6 F
0.56 (\361) 420.86 605.33 P
4 F
0.62 ( needs to repeat the loop) 424.15 605.33 P
(then a request of the form:) 72 585.33 T
5 F
(\050) 108 560.33 T
6 F
(\341) 114 560.33 T
2 F
(id) 117.29 560.33 T
6 F
(\361) 125.06 560.33 T
(\341) 134.35 560.33 T
2 F
(expr) 137.63 560.33 T
6 F
(\361) 155.39 560.33 T
(\274) 164.68 560.33 T
5 F
(\051) 174.67 560.33 T
4 F
-0.34 (is made.  This causes the) 72 540.33 P
6 F
-0.31 (\341) 188.25 540.33 P
7 F
-0.34 (body) 191.54 540.33 P
6 F
-0.31 (\361) 213.2 540.33 P
4 F
-0.34 ( to be evaluated again with the bindings determined by the) 216.49 540.33 P
6 F
-0.31 (\341) 488.39 540.33 P
7 F
-0.34 (expr) 491.68 540.33 P
6 F
-0.31 (\361) 511.29 540.33 P
4 F
-0.34 (.  The) 514.58 540.33 P
(following example computes the factorial of) 72 520.33 T
5 F
(12) 274.87 520.33 T
4 F
(:) 286.86 520.33 T
5 F
(\050iterate loop [[n 12] [r 1]]) 108 495.33 T
(  \050if \050< n 2\051) 108 485.33 T
(      r) 108 475.33 T
(      \050loop \050dec n\051 \050* r n\051\051\051\051) 108 465.33 T
6 F
(\336) 360 465.33 T
5 F
( 479001600) 369.86 465.33 T
4 F
(The result of the) 72 445.33 T
5 F
(iterate) 151.41 445.33 T
4 F
( is the final result of the) 193.38 445.33 T
6 F
(\341) 307.41 445.33 T
7 F
(body) 310.7 445.33 T
6 F
(\361) 332.36 445.33 T
5 F
(\050do [[) 72 420.33 T
6 F
(\341) 107.98 420.33 T
2 F
(id) 111.27 420.33 T
6 F
(\361) 119.04 420.33 T
1 F
(1) 122.33 416.33 T
6 F
( \341) 127.33 420.33 T
2 F
(init) 133.12 420.33 T
6 F
(\361) 146.45 420.33 T
1 F
(1) 149.74 416.33 T
6 F
(\341) 160.73 420.33 T
2 F
(step) 164.02 420.33 T
6 F
(\361) 180.12 420.33 T
1 F
(1) 183.41 416.33 T
5 F
(]) 188.41 420.33 T
6 F
(\274) 200.4 420.33 T
5 F
(] [\050) 210.39 420.33 T
6 F
(\341) 234.38 420.33 T
2 F
(cond) 237.67 420.33 T
6 F
(\361) 257.1 420.33 T
1 F
(1) 260.39 416.33 T
6 F
(\341) 271.38 420.33 T
2 F
(expr) 274.67 420.33 T
6 F
(\361) 292.43 420.33 T
1 F
(1) 295.72 416.33 T
5 F
(\051) 300.71 420.33 T
6 F
(\274) 306.71 420.33 T
5 F
(]) 316.71 420.33 T
6 F
(\341) 328.7 420.33 T
2 F
(body) 331.99 420.33 T
6 F
(\361) 351.42 420.33 T
5 F
(\051) 354.7 420.33 T
6 F
(\336) 366.7 420.33 T
2 F
(any) 382.56 420.33 T
1 F
(derived syntax) 481.43 420.33 T
5 F
(\050do* [[) 72 406.33 T
6 F
(\341) 113.98 406.33 T
2 F
(id) 117.26 406.33 T
6 F
(\361) 125.04 406.33 T
1 F
(1) 128.33 402.33 T
6 F
( \341) 133.33 406.33 T
2 F
(init) 139.11 406.33 T
6 F
(\361) 152.45 406.33 T
1 F
(1) 155.73 402.33 T
6 F
(\341) 166.73 406.33 T
2 F
(step) 170.02 406.33 T
6 F
(\361) 186.12 406.33 T
1 F
(1) 189.4 402.33 T
5 F
(]) 194.4 406.33 T
6 F
(\274) 206.4 406.33 T
5 F
(] [\050) 216.39 406.33 T
6 F
(\341) 240.38 406.33 T
2 F
(cond) 243.67 406.33 T
6 F
(\361) 263.1 406.33 T
1 F
(1) 266.38 402.33 T
6 F
(\341) 277.38 406.33 T
2 F
(expr) 280.67 406.33 T
6 F
(\361) 298.43 406.33 T
1 F
(1) 301.71 402.33 T
5 F
(\051) 306.71 406.33 T
6 F
(\274) 312.71 406.33 T
5 F
(]) 322.7 406.33 T
6 F
(\341) 334.7 406.33 T
2 F
(body) 337.98 406.33 T
6 F
(\361) 357.41 406.33 T
5 F
(\051) 360.7 406.33 T
6 F
(\336) 372.7 406.33 T
2 F
(any) 388.56 406.33 T
1 F
(derived syntax) 481.43 406.33 T
4 F
-0.4 (These two forms evaluate the) 72 382.33 P
6 F
-0.36 (\341) 208.82 382.33 P
7 F
-0.4 (init) 212.11 382.33 P
6 F
-0.36 (\361) 228.39 382.33 P
4 F
-0.4 (i) 231.68 378.33 P
-0.4 ( concurrently and bind the results to the) 234.83 382.33 P
6 F
-0.36 (\341) 420.95 382.33 P
7 F
-0.4 (id) 424.24 382.33 P
6 F
-0.36 (\361) 433.67 382.33 P
4 F
-0.4 (i) 436.96 378.33 P
-0.4 (.  The) 440.11 382.33 P
6 F
-0.36 (\341) 467.79 382.33 P
7 F
-0.4 (cond) 471.07 382.33 P
6 F
-0.36 (\361) 492.72 382.33 P
4 F
-0.4 (i) 496.01 378.33 P
-0.4 ( are then) 499.16 382.33 P
0.09 (evaluated in an environment extended with the bindings and if none are) 72 358.33 P
5 F
0.19 (#t) 410.3 358.33 P
4 F
0.09 (, then the) 422.29 358.33 P
6 F
0.08 (\341) 469.76 358.33 P
7 F
0.09 (body) 473.04 358.33 P
6 F
0.08 (\361) 494.7 358.33 P
4 F
0.09 ( is evalu-) 497.99 358.33 P
0.42 (ated in the same environment, the) 72 338.33 P
6 F
0.38 (\341) 236.47 338.33 P
7 F
0.42 (step) 239.76 338.33 P
6 F
0.38 (\361) 257.89 338.33 P
4 F
0.42 (i) 261.18 334.33 P
0.42 ( are evaluated and rebound to the) 264.33 338.33 P
6 F
0.38 (\341) 426.26 338.33 P
7 F
0.42 (id) 429.55 338.33 P
6 F
0.38 (\361) 438.98 338.33 P
4 F
0.42 (i) 442.27 334.33 P
0.42 (, and the process re-) 445.42 338.33 P
-0.23 (peats.  The two forms differ in how the) 72 314.33 P
6 F
-0.21 (\341) 251.31 314.33 P
7 F
-0.23 (step) 254.6 314.33 P
6 F
-0.21 (\361) 272.73 314.33 P
4 F
-0.23 (i) 276.02 310.33 P
-0.23 ( are computed.  In the case of) 279.16 314.33 P
5 F
-0.5 (do) 415.2 314.33 P
4 F
-0.23 ( the) 427.19 314.33 P
6 F
-0.21 (\341) 447.27 314.33 P
7 F
-0.23 (step) 450.56 314.33 P
6 F
-0.21 (\361) 468.69 314.33 P
4 F
-0.23 (i) 471.98 310.33 P
-0.23 ( are computed) 475.13 314.33 P
0.08 (concurrently and for the) 72 290.33 P
5 F
0.18 (do*) 187.07 290.33 P
4 F
0.08 ( they are evaluated in text-order and the subsequent) 205.06 290.33 P
6 F
0.08 (\341) 451.82 290.33 P
7 F
0.08 (step) 455.11 290.33 P
6 F
0.08 (\361) 473.24 290.33 P
4 F
0.08 (s may depend) 476.53 290.33 P
(on the bindings established by preceding) 72 270.33 T
6 F
(\341) 262.85 270.33 T
7 F
(step) 266.13 270.33 T
6 F
(\361) 284.26 270.33 T
4 F
(s.  For example,) 287.55 270.33 T
5 F
(\050do [[last #niv \050new List n last\051]) 108 245.33 T
(     [n    1    \050inc n\051]]) 108 235.33 T
(  [\050\050= n N\051  \050new List n last\051\051]\051) 108 225.33 T
4 F
-0.5 (is a simple loop that builds) 72 205.33 P
5 F
-1.09 (N) 196.16 205.33 P
-1.09 (List) 204.44 205.33 P
4 F
-0.5 ( actors such that the head of the list holds the value) 228.42 205.33 P
5 F
-1.09 (N) 464.68 205.33 P
4 F
-0.5 ( and successive) 470.68 205.33 P
5 F
-0.55 (List) 72 185.33 P
4 F
-0.25 ( actors have decreasing values down to) 95.99 185.33 P
5 F
-0.55 (1) 276.36 185.33 P
4 F
-0.25 (.  The variable) 282.36 185.33 P
5 F
-0.55 (last) 350.78 185.33 P
4 F
-0.25 ( is initially) 374.76 185.33 P
5 F
-0.55 (#niv) 426.77 185.33 P
4 F
-0.25 ( and) 450.76 185.33 P
5 F
-0.55 (n) 473.21 185.33 P
4 F
-0.25 ( is initially) 479.21 185.33 P
5 F
-0.55 (1) 531.22 185.33 P
4 F
-0.25 (.) 537.22 185.33 P
0.01 (The termination condition is) 72 165.33 P
5 F
0.02 (\050= n N\051) 206.42 165.33 P
4 F
0.01 ( at which point a final) 248.43 165.33 P
5 F
0.02 (List) 352.88 165.33 P
4 F
0.01 ( actor is created as the result of the) 376.87 165.33 P
0.06 (loop.  On successive steps through the loop) 72 145.33 P
5 F
0.13 (last) 272.38 145.33 P
4 F
0.06 ( is bound to a new) 296.37 145.33 P
5 F
0.13 (List) 383 145.33 P
4 F
0.06 ( actor with the current value) 406.99 145.33 P
-0.42 (of) 72 125.33 P
5 F
-0.91 (n) 82.68 125.33 P
4 F
-0.42 ( and linked to the current value of) 88.68 125.33 P
5 F
-0.91 (last) 245.8 125.33 P
4 F
-0.42 (, also) 269.79 125.33 P
5 F
-0.91 (n) 295.61 125.33 P
4 F
-0.42 ( is incremented.  In this example the) 301.61 125.33 P
6 F
-0.38 (\341) 470.4 125.33 P
7 F
-0.42 (body) 473.69 125.33 P
6 F
-0.38 (\361) 495.34 125.33 P
4 F
-0.42 ( is empty) 498.63 125.33 P
(which is not unusual since often all of the computation can be performed in the) 72 105.33 T
6 F
(\341) 439.79 105.33 T
7 F
(step) 443.08 105.33 T
6 F
(\361) 461.21 105.33 T
4 F
(i) 464.49 101.33 T
(.) 467.64 105.33 T
FMENDPAGE
%%EndPage: "25" 24
%%Page: "24" 24
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(24) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(\050cond \050\050<= amount balance\051) 108 713.33 T
(       \050update balance \050- balance amount\051\051) 108 703.33 T
(       [\325withdrew amount]\051) 108 693.33 T
(      \050\050> amount balance\051) 108 683.33 T
(       \050update\051) 108 673.33 T
(       [\325overdraft \050- amount balance\051]\051\051) 108 663.33 T
3 12 Q
(5.3.) 72 642 T
(Binding constructs) 108 642 T
4 10 Q
0.37 (The binding constructs) 72 623.33 P
5 F
0.8 (let) 181.95 623.33 P
4 F
0.37 (,) 199.94 623.33 P
5 F
0.8 (let*) 205.87 623.33 P
4 F
0.37 ( and) 229.85 623.33 P
5 F
0.8 (letrec) 253.55 623.33 P
4 F
0.37 ( give Rosette a block structure, as in Common Lisp or) 289.53 623.33 P
(Scheme.  These constructs differ in the regions they establish for variable bindings.) 72 603.33 T
5 F
(\050let [[) 72 578.33 T
6 F
(\341) 113.98 578.33 T
2 F
(id or pattern) 117.26 578.33 T
6 F
(\361) 167.8 578.33 T
(\341) 177.08 578.33 T
2 F
(expr) 180.37 578.33 T
6 F
(\361) 198.13 578.33 T
5 F
(]) 201.42 578.33 T
6 F
(\274) 213.41 578.33 T
5 F
(]) 223.41 578.33 T
6 F
(\341) 235.4 578.33 T
2 F
(body) 238.69 578.33 T
6 F
(\361) 258.12 578.33 T
5 F
(\051) 261.41 578.33 T
1 F
(special form) 490.32 578.33 T
4 F
0.11 (The) 72 558.33 P
6 F
0.1 (\341) 92.66 558.33 P
7 F
0.11 (expr) 95.95 558.33 P
6 F
0.1 (\361) 115.56 558.33 P
4 F
0.11 (s are evaluated concurrently, the results are then bound according to the corresponding) 118.85 558.33 P
6 F
0.1 (\341) 527.28 558.33 P
7 F
0.11 (id) 530.57 558.33 P
-0.53 (or pattern) 72 538.33 P
6 F
-0.48 (\361) 117.17 538.33 P
4 F
-0.53 (s.  The) 120.46 538.33 P
6 F
-0.48 (\341) 152.37 538.33 P
7 F
-0.53 (body) 155.66 538.33 P
6 F
-0.48 (\361) 177.32 538.33 P
4 F
-0.53 ( is then executed in an environment extended with the indicated bindings.  The) 180.61 538.33 P
0.61 (result of the) 72 518.33 P
6 F
0.55 (\341) 132.69 518.33 P
7 F
0.61 (body) 135.98 518.33 P
6 F
0.55 (\361) 157.64 518.33 P
4 F
0.61 ( is returned to the continuation that was in effect at the point where the) 160.92 518.33 P
5 F
1.32 (let) 505.86 518.33 P
4 F
0.61 ( oc-) 523.85 518.33 P
-0.02 (curred.  A) 72 498.33 P
6 F
-0.02 (\341) 120.41 498.33 P
7 F
-0.02 (pattern) 123.7 498.33 P
6 F
-0.02 (\361) 157.19 498.33 P
4 F
-0.02 ( is used in a binding to allow the) 160.48 498.33 P
6 F
-0.02 (\341) 313.01 498.33 P
7 F
-0.02 (expr) 316.3 498.33 P
6 F
-0.02 (\361) 335.91 498.33 P
4 F
-0.02 ( to return multiple values.  \050for more on the) 339.2 498.33 P
(syntax of) 72 478.33 T
6 F
(\341) 116.79 478.33 T
7 F
(pattern) 120.08 478.33 T
6 F
(\361) 153.57 478.33 T
4 F
(s, see section) 156.86 478.33 T
8 F
(6.1) 219.43 478.33 T
4 F
(.\051  The) 233.68 478.33 T
6 F
(\341) 265.89 478.33 T
7 F
(body) 269.18 478.33 T
6 F
(\361) 290.84 478.33 T
4 F
( is an implicit block.) 294.13 478.33 T
5 F
(\050let [[x 2] [y 3]] \050* x y\051\051) 108 458.33 T
6 F
(\336) 360 458.33 T
5 F
( 6) 369.86 458.33 T
(\050let* [[) 72 438.33 T
6 F
(\341) 119.97 438.33 T
2 F
(id or pattern) 123.26 438.33 T
6 F
(\361) 173.79 438.33 T
(\341) 183.08 438.33 T
2 F
(expr) 186.37 438.33 T
6 F
(\361) 204.13 438.33 T
5 F
(]) 207.42 438.33 T
6 F
(\274) 219.41 438.33 T
5 F
(]) 229.4 438.33 T
6 F
(\341) 241.4 438.33 T
2 F
(body) 244.68 438.33 T
6 F
(\361) 264.11 438.33 T
5 F
(\051) 267.4 438.33 T
1 F
(derived syntax) 481.43 438.33 T
4 F
(The) 72 418.33 T
5 F
(let*) 92.55 418.33 T
4 F
( form expands to nested) 116.54 418.33 T
5 F
(lets) 229.44 418.33 T
4 F
( one for each) 253.43 418.33 T
5 F
([) 314.51 418.33 T
6 F
(\341) 320.5 418.33 T
7 F
(id or pattern) 323.79 418.33 T
6 F
(\361) 381.71 418.33 T
(\341) 390.99 418.33 T
7 F
(expr) 394.28 418.33 T
6 F
(\361) 413.89 418.33 T
5 F
(]) 417.18 418.33 T
4 F
(.) 423.18 418.33 T
5 F
(\050let* [[x 2]       [y \050+ x 1\051]) 108 393.33 T
(       [x \050+ y 4\051] [z \050+ x 9\051]]) 108 383.33 T
(  \050+ x y z\051\051\051) 108 371.33 T
6 F
(\336) 360 373.33 T
5 F
( 26) 369.86 373.33 T
(\050letrec [[) 72 351.33 T
6 F
(\341) 131.97 351.33 T
2 F
(id) 135.26 351.33 T
6 F
(\361) 143.03 351.33 T
(\341) 152.32 351.33 T
2 F
(expr) 155.6 351.33 T
6 F
(\361) 173.36 351.33 T
5 F
(]) 176.65 351.33 T
6 F
(\274) 188.65 351.33 T
5 F
(]) 198.64 351.33 T
6 F
(\341) 210.63 351.33 T
2 F
(body) 213.92 351.33 T
6 F
(\361) 233.35 351.33 T
5 F
(\051) 236.64 351.33 T
1 F
(special form) 490.32 351.33 T
4 F
0.15 (The) 72 331.33 P
6 F
0.14 (\341) 92.7 331.33 P
7 F
0.15 (id) 95.99 331.33 P
6 F
0.14 (\361) 105.42 331.33 P
4 F
0.15 (s are initially bound to \322dummy\323 actors that will) 108.71 331.33 P
5 F
0.33 (become) 336.12 331.33 P
4 F
0.15 ( the results of the) 372.1 331.33 P
6 F
0.14 (\341) 456.9 331.33 P
7 F
0.15 (expr) 460.18 331.33 P
6 F
0.14 (\361) 479.8 331.33 P
4 F
0.15 (s.  The envi-) 483.08 331.33 P
-0.41 (ronment in effect at the point of occurrence of the) 72 311.33 P
5 F
-0.89 (letrec) 298.67 311.33 P
4 F
-0.41 ( is extended with these initial bindings.  This) 334.65 311.33 P
-0.11 (extended environment is then used to evaluate the) 72 291.33 P
6 F
-0.1 (\341) 308.06 291.33 P
7 F
-0.11 (expr) 311.35 291.33 P
6 F
-0.1 (\361) 330.96 291.33 P
4 F
-0.11 (s concurrently.  As each) 334.24 291.33 P
6 F
-0.1 (\341) 446.41 291.33 P
7 F
-0.11 (expr) 449.7 291.33 P
6 F
-0.1 (\361) 469.3 291.33 P
4 F
-0.11 ( produces a re-) 472.59 291.33 P
-0.32 (sult the corresponding dummy actor) 72 271.33 P
5 F
-0.7 (become) 240.46 271.33 P
4 F
-0.32 (s that result.  The body is then evaluated in this extended) 276.45 271.33 P
0.04 (environment with the continuation that was in effect for the entire) 72 251.33 P
5 F
0.08 (letrec) 383.36 251.33 P
4 F
0.04 (.  The) 419.34 251.33 P
6 F
0.03 (\341) 448.34 251.33 P
7 F
0.04 (body) 451.63 251.33 P
6 F
0.03 (\361) 473.29 251.33 P
4 F
0.04 ( is an implicit) 476.57 251.33 P
(block construct.) 72 231.33 T
5 F
(\050letrec [[even? \050proc [n] \050if \050= n 0\051 #t \050odd? \050- n 1\051\051\051\051]) 108 206.33 T
(         [odd?  \050proc [n] \050if \050= n 0\051 #f \050even? \050- n 1\051\051\051\051]]) 108 196.33 T
(  \050even? 88\051\051) 108 186.34 T
6 F
(\336) 423 186.34 T
5 F
( #t) 432.86 186.34 T
4 F
-0 (In this example, the two) 72 166.34 P
5 F
-0.01 (proc) 186.94 166.34 P
4 F
-0 ( expressions \050see section) 210.93 166.34 P
8 F
-0 (6.2) 325.86 166.34 P
4 F
-0 (\051 are evaluated in an environment in which) 340.11 166.34 P
-0.15 (both) 72 146.34 P
5 F
-0.33 (even?) 95.17 146.34 P
4 F
-0.15 ( and) 125.16 146.34 P
5 F
-0.33 (odd?) 147.81 146.34 P
4 F
-0.15 ( are given fresh bindings.  Thus, the two) 171.79 146.34 P
5 F
-0.33 (proc) 359.41 146.34 P
4 F
-0.15 ( expressions will be closed over an) 383.4 146.34 P
(environment in which each is defined and visible to the other.) 72 126.34 T
FMENDPAGE
%%EndPage: "24" 23
%%Page: "23" 23
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(23) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(\050seq) 72 710.67 T
2 F
(expr) 101.98 710.67 T
1 8 Q
(1) 119.74 706.67 T
6 10 Q
(\274) 129.74 710.67 T
2 F
(expr) 145.73 710.67 T
1 8 Q
(n) 163.49 706.67 T
5 10 Q
(\051) 167.49 710.67 T
6 F
(\336) 176.98 710.67 T
2 F
(result) 192.84 710.67 T
1 8 Q
(n) 215.61 706.67 T
1 10 Q
(special form) 490.32 710.67 T
4 F
0.01 (This form evaluates a sequence of expressions in \322text order\323 and has as a result the result of the last) 72 687.33 P
-0.15 (expression in the) 72 667.33 P
5 F
-0.32 (seq) 153.19 667.33 P
4 F
-0.15 ( form.  This form is included in Rosette along with) 171.18 667.33 P
5 F
-0.32 (set!) 403.91 667.33 P
4 F
-0.15 (,) 427.89 667.33 P
5 F
-0.32 (label) 433.3 667.33 P
4 F
-0.15 (, and) 463.29 667.33 P
5 F
-0.32 (goto) 488.73 667.33 P
4 F
-0.15 ( in or-) 512.72 667.33 P
0.33 (der to allow the expression in Rosette of methods that would otherwise have to be primitively imple-) 72 647.33 P
-0.25 (mented.  These include most of the I/O system and the iteration constructs provided in Rosette as syn-) 72 627.33 P
-0.68 (tax extensions.  It should rarely be the case that these forms are used other than in such contexts.  Each) 72 607.33 P
-0.47 (of the) 72 587.33 P
7 F
-0.47 (expr) 99.93 587.33 P
4 8 Q
-0.38 (i) 119.54 583.33 P
4 10 Q
-0.47 ( must return a result, since this is the only way in the Actor model that causal dependencies) 122.06 587.33 P
-0.67 (can be expressed.  Thus, if a send is used in a) 72 564 P
5 F
-1.45 (seq) 276.08 564 P
4 F
-0.67 ( form, it should be enclosed in a) 294.07 564 P
5 F
-1.45 (void) 437.51 564 P
4 F
-0.67 ( form \050see below\051.) 461.5 564 P
3 12 Q
(5.2.) 72 532.67 T
(Conditionals) 108 532.67 T
5 10 Q
(\050if) 72 514 T
6 F
(\341) 95.99 514 T
2 F
(expr) 99.28 514 T
6 F
(\361) 117.04 514 T
1 8 Q
(1) 120.32 510 T
6 10 Q
(\341) 130.32 514 T
2 F
(expr) 133.61 514 T
6 F
(\361) 151.37 514 T
1 8 Q
(2) 154.65 510 T
5 10 Q
(\051) 158.65 514 T
1 F
(special form) 490.32 514 T
5 F
(\050if) 72 500.67 T
6 F
(\341) 95.99 500.67 T
2 F
(expr) 99.28 500.67 T
6 F
(\361) 117.04 500.67 T
1 8 Q
(1) 120.32 496.67 T
6 10 Q
(\341) 130.32 500.67 T
2 F
(expr) 133.61 500.67 T
6 F
(\361) 151.37 500.67 T
1 8 Q
(2) 154.65 496.67 T
6 10 Q
(\341) 164.65 500.67 T
2 F
(expr) 167.94 500.67 T
6 F
(\361) 185.7 500.67 T
1 8 Q
(3) 188.99 496.67 T
5 10 Q
(\051) 192.98 500.67 T
1 F
(special form) 490.32 500.67 T
4 F
-0.1 (These two forms provide the conventional if-then and if-then-else control constructs in which the) 72 477.33 P
7 F
-0.1 (then) 519.83 477.33 P
4 F
-0.11 (and) 72 457.33 P
7 F
-0.11 (else) 92.07 457.33 P
4 F
-0.11 ( parts are) 108.71 457.33 P
8 F
-0.11 (not) 155.97 457.33 P
4 F
-0.11 ( evaluated unless the condition warrants it.   If) 173.18 457.33 P
6 F
-0.1 (\341) 392.02 457.33 P
7 F
-0.11 (expr) 395.31 457.33 P
6 F
-0.1 (\361) 414.92 457.33 P
4 8 Q
-0.09 (1) 418.2 453.33 P
4 10 Q
-0.11 ( evaluates to) 422.65 457.33 P
5 F
-0.23 (#t) 483.79 457.33 P
4 F
-0.11 (, then the) 495.79 457.33 P
0.42 (first form returns the result of evaluating) 72 434 P
6 F
0.38 (\341) 269.85 434 P
7 F
0.42 (expr) 273.14 434 P
6 F
0.38 (\361) 292.75 434 P
4 8 Q
0.34 (2) 296.04 430 P
4 10 Q
0.42 (, and returns) 300.48 434 P
5 F
0.91 (#niv) 364.87 434 P
4 F
0.42 ( if the condition evaluates to) 388.85 434 P
5 F
0.91 (#f) 525.23 434 P
4 F
0.42 (.) 537.22 434 P
-0.06 (The second form behaves as the first except that) 72 410.67 P
6 F
-0.05 (\341) 297.47 410.67 P
7 F
-0.06 (expr) 300.76 410.67 P
6 F
-0.05 (\361) 320.37 410.67 P
4 8 Q
-0.05 (3) 323.66 406.67 P
4 10 Q
-0.06 ( is evaluated for the case of) 328.1 410.67 P
5 F
-0.13 (#f) 455.96 410.67 P
4 F
-0.06 (.  If) 467.96 410.67 P
6 F
-0.05 (\341) 486.29 410.67 P
7 F
-0.06 (expr) 489.58 410.67 P
6 F
-0.05 (\361) 509.19 410.67 P
4 8 Q
-0.05 (1) 512.48 406.67 P
4 10 Q
-0.06 ( does) 516.92 410.67 P
(not evaluate to a boolean, it is treated as) 72 387.33 T
5 F
(#t) 262.7 387.33 T
4 F
(.) 274.69 387.33 T
5 F
(\050if #t 1\051) 108 362.33 T
6 F
(\336) 360 362.33 T
5 F
( 1) 369.86 362.33 T
(\050if #f 1\051) 108 352.33 T
6 F
(\336) 360 352.33 T
5 F
( #niv) 369.86 352.33 T
(\050if \050= y 0\051 0 \050% x y\051\051) 108 342.33 T
6 F
(\336) 360 342.33 T
5 F
( 0) 369.86 342.33 T
2 F
(or) 387.86 342.33 T
5 F
( \050% x y\051) 396.74 342.33 T
(\050cond \050) 72 322.33 T
6 F
(\341) 113.98 322.33 T
2 F
(test) 117.26 322.33 T
6 F
(\361) 131.15 322.33 T
1 8 Q
(1) 134.44 318.33 T
6 10 Q
(\341) 144.43 322.33 T
2 F
(body) 147.72 322.33 T
6 F
(\361) 167.15 322.33 T
1 8 Q
(1) 170.44 318.33 T
5 10 Q
(\051 \050) 174.43 322.33 T
6 F
(\341) 192.42 322.33 T
2 F
(test) 195.71 322.33 T
6 F
(\361) 209.59 322.33 T
1 8 Q
(2) 212.88 318.33 T
6 10 Q
(\341) 219.38 322.33 T
2 F
(body) 222.67 322.33 T
6 F
(\361) 242.1 322.33 T
1 8 Q
(2) 245.38 318.33 T
5 10 Q
(\051) 249.38 322.33 T
6 F
(\274) 261.38 322.33 T
5 F
(\051) 271.37 322.33 T
1 F
(derived syntax) 481.43 322.33 T
5 F
(\050cond \050) 72 309 T
6 F
(\341) 113.98 309 T
2 F
(test) 117.26 309 T
6 F
(\361) 131.15 309 T
1 8 Q
(1) 134.44 305 T
6 10 Q
(\341) 144.43 309 T
2 F
(body) 147.72 309 T
6 F
(\361) 167.15 309 T
1 8 Q
(1) 170.44 305 T
5 10 Q
(\051 \050) 174.43 309 T
6 F
(\341) 192.42 309 T
2 F
(test) 195.71 309 T
6 F
(\361) 209.59 309 T
1 8 Q
(2) 212.88 305 T
6 10 Q
(\341) 219.38 309 T
2 F
(body) 222.67 309 T
6 F
(\361) 242.1 309 T
1 8 Q
(2) 245.38 305 T
5 10 Q
(\051) 249.38 309 T
6 F
(\274) 261.38 309 T
5 F
( \050else) 271.37 309 T
6 F
(\341) 313.35 309 T
2 F
(body) 316.64 309 T
6 F
(\361) 336.07 309 T
1 8 Q
(e) 339.35 305 T
5 10 Q
(\051\051) 342.9 309 T
1 F
(derived syntax) 481.43 309 T
4 F
-0.09 (The) 72 285.67 P
5 F
-0.2 (cond) 92.46 285.67 P
4 F
-0.09 ( packages a familiar use of) 116.44 285.67 P
5 F
-0.2 (if) 241.58 285.67 P
4 F
-0.09 ( in which there are several \050usually mutually exclusive\051 condi-) 253.58 285.67 P
-0.54 (tions to be tested for and an action taken on some true condition.  The) 72 265.67 P
6 F
-0.49 (\341) 389.47 265.67 P
7 F
-0.54 (test) 392.76 265.67 P
6 F
-0.49 (\361) 408.67 265.67 P
4 8 Q
-0.43 (i) 411.96 261.67 P
4 10 Q
-0.54 ( are evaluated concurrently) 414.48 265.67 P
0.04 (and the) 72 242.33 P
6 F
0.03 (\341) 110.02 242.33 P
7 F
0.04 (body) 113.31 242.33 P
6 F
0.03 (\361) 134.97 242.33 P
4 8 Q
0.03 (i) 138.26 238.33 P
4 10 Q
0.04 ( corresponding to a true) 140.78 242.33 P
6 F
0.03 (\341) 253.86 242.33 P
7 F
0.04 (test) 257.14 242.33 P
6 F
0.03 (\361) 273.06 242.33 P
4 8 Q
0.03 (i) 276.34 238.33 P
4 10 Q
0.04 ( is evaluated and the result returned to the continuation) 278.86 242.33 P
-0.59 (of the entire) 72 219 P
5 F
-1.28 (cond) 129.45 219 P
4 F
-0.59 (; if there is more than one true) 153.44 219 P
6 F
-0.53 (\341) 292.89 219 P
7 F
-0.59 (test) 296.18 219 P
6 F
-0.53 (\361) 312.09 219 P
4 8 Q
-0.47 (i) 315.38 215 P
4 10 Q
-0.59 (, then one) 317.9 219 P
6 F
-0.53 (\341) 364.43 219 P
7 F
-0.59 (body) 367.72 219 P
6 F
-0.53 (\361) 389.38 219 P
4 8 Q
-0.47 (i) 392.67 215 P
4 10 Q
-0.59 ( is chosen non-deterministically) 395.19 219 P
-0.25 (for evaluation.  If all of the) 72 195.67 P
6 F
-0.22 (\341) 196.69 195.67 P
7 F
-0.25 (test) 199.98 195.67 P
6 F
-0.22 (\361) 215.89 195.67 P
4 8 Q
-0.2 (i) 219.18 191.67 P
4 10 Q
-0.25 ( are evaluated and none are) 221.69 195.67 P
5 F
-0.54 (#t) 351.82 195.67 P
4 F
-0.25 (, then if an) 363.81 195.67 P
5 F
-0.54 (else) 415.94 195.67 P
4 F
-0.25 ( clause has been spec-) 439.93 195.67 P
0.16 (ified, the) 72 172.33 P
6 F
0.14 (\341) 116 172.33 P
7 F
0.16 (body) 119.29 172.33 P
6 F
0.14 (\361) 140.95 172.33 P
4 8 Q
0.13 (e) 144.23 168.33 P
4 10 Q
0.16 ( is evaluated; otherwise the result of the) 148.23 172.33 P
5 F
0.34 (cond) 338.11 172.33 P
4 F
0.16 ( is) 362.1 172.33 P
5 F
0.34 (#niv) 375.75 172.33 P
4 F
0.16 (.  The) 399.73 172.33 P
5 F
0.34 (cond) 429.09 172.33 P
4 F
0.16 ( will not terminate) 453.08 172.33 P
-0.02 (if not all of the) 72 149 P
6 F
-0.02 (\341) 142.41 149 P
7 F
-0.02 (test) 145.7 149 P
6 F
-0.02 (\361) 161.61 149 P
4 8 Q
-0.02 (i) 164.9 145 P
4 10 Q
-0.02 ( complete, and among the ones that do complete none are) 167.41 149 P
5 F
-0.05 (#t) 434.07 149 P
4 F
-0.02 (.  Each of the) 446.06 149 P
6 F
-0.02 (\341) 509.25 149 P
7 F
-0.02 (body) 512.53 149 P
6 F
-0.02 (\361) 534.19 149 P
4 8 Q
-0.02 (i) 537.48 145 P
4 10 Q
0.04 (is an implicit block construct.  It can always be ensured that the result of a) 72 125.67 P
5 F
0.08 (cond) 420.95 125.67 P
4 F
0.04 ( is deterministic and) 444.93 125.67 P
-0.03 (terminating by writing each of the) 72 105.67 P
6 F
-0.02 (\341) 233.25 105.67 P
7 F
-0.03 (test) 236.54 105.67 P
6 F
-0.02 (\361) 252.45 105.67 P
4 8 Q
-0.02 (i) 255.74 101.67 P
4 10 Q
-0.03 ( so that for all contexts, exactly one evaluates to) 258.26 105.67 P
5 F
-0.06 (#t) 482.54 105.67 P
4 F
-0.03 (, as in the) 494.53 105.67 P
(following:) 72 82.33 T
FMENDPAGE
%%EndPage: "23" 22
%%Page: "22" 22
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(22) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 12 Q
0 X
(5.) 72 712 T
(Compound constructs) 90 712 T
4 10 Q
-0.36 (The compound constructs are built using the simple expressions and commands of section) 72 686.33 P
8 F
-0.38 (4) 484.29 686.33 P
4 F
-0.36 ( and recur-) 490.02 686.33 P
0.26 (sive use of the compound constructs.  The compound constructs are presented in terms of the catego-) 72 666.33 P
(ries: blocks, conditionals, and binding constructs.) 72 646.33 T
3 12 Q
(5.1.) 72 615 T
(Blocks) 108 615 T
5 10 Q
(\050block) 72 596.33 T
6 F
(\341) 113.98 596.33 T
2 F
(expr) 117.26 596.33 T
6 F
(\361) 135.02 596.33 T
(\341) 144.31 596.33 T
2 F
(expr) 147.6 596.33 T
6 F
(\361) 165.36 596.33 T
(\274) 174.64 596.33 T
5 F
(\051) 184.64 596.33 T
1 F
(basic syntax) 490.87 596.33 T
4 F
0.41 (A block expression packages a set of expressions that are to be evaluated concurrently.  Again, \322con-) 72 576.33 P
0.66 (currently\323 means that the expressions may be executed in any order and the semantics of the block) 72 556.33 P
-0.42 (expression should not depend on any particular order.  The continuation in effect at the point the block) 72 536.33 P
-0.04 (expression is encountered becomes the continuation for each of the expressions in the block.  This is a) 72 516.33 P
1.15 (crucial difference between the) 72 496.33 P
5 F
2.48 (block) 217.81 496.33 P
4 F
1.15 ( and the processing of the components of communication con-) 247.79 496.33 P
0.31 (structs.  The communication constructs build new continuation actors to receive results and package) 72 476.33 P
-0.17 (them in a message structure.  The) 72 456.33 P
5 F
-0.37 (block) 231.48 456.33 P
4 F
-0.17 ( does not build any new continuations; it forwards its contin-) 261.46 456.33 P
(uation to its component expressions.) 72 436.33 T
0.18 (If an expression is a send expression, then the continuation is not used.  If the expression is a re-) 90 411.33 P
0.01 (quest expression then the continuation is propagated in the request to be used as the target of the re-) 72 391.33 P
-0.01 (sult message.  For other expressions, the situation is similar to that of a request.  For example, a con-) 72 371.33 P
(stant expression simply returns itself to the continuation at the point the constant is encountered.) 72 351.33 T
0.19 (Since all of the expressions in a block receive the same continuation, it is possible to directly rep-) 90 326.33 P
-0.56 (resent a \322race\323 among competing expressions, and the first result to be delivered to the actor represent-) 72 306.33 P
-0.67 (ing the waiting context becomes the result of the block.  Later results, if any, are ignored.  The following) 72 286.33 P
(example illustrates the non-determinism inherent in the block construct:) 72 266.33 T
5 F
(\050block 1 2 3 4\051) 108 241.33 T
6 F
(\336) 360 241.33 T
5 F
( 1) 369.86 241.33 T
2 F
( or) 381.86 241.33 T
5 F
(2) 395.74 241.33 T
2 F
( or) 401.74 241.33 T
5 F
(3) 415.62 241.33 T
2 F
( or) 421.62 241.33 T
5 F
(4) 435.5 241.33 T
4 F
0.08 (The behavior above is a consequence of the \322natural\323 semantics of a block.  More conventional uses of) 72 221.33 P
0.17 (the block construct have at most one expression that will yield a result.  All other expressions will be) 72 201.33 P
(sends, or other compound expressions that do not yield results.) 72 181.33 T
5 F
(\050block) 108 156.33 T
(  \050update balance \050+ balance amount\051\051) 108 146.33 T
(  [\325credited amount]\051) 108 136.33 T
4 F
0.32 (In the example above, updating the) 72 116.33 P
5 F
0.7 (balance) 240.35 116.33 P
4 F
0.32 ( does not produce any result, while two values \050) 282.33 116.33 P
5 F
0.7 (\325cred-) 504.02 116.33 P
-0.67 (ited) 72 96.33 P
4 F
-0.31 ( and) 95.99 96.33 P
5 F
-0.67 (amount) 118.32 96.33 P
4 F
-0.31 (\051 are sent to the continuation waiting for the result of the block.  If a block is encoun-) 154.3 96.33 P
(tered that may produce more than one result then a warning is issued to that effect.) 72 76.33 T
FMENDPAGE
%%EndPage: "22" 21
%%Page: "21" 21
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(21) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(\050become) 72 713.33 T
2 F
(prototype) 125.97 713.33 T
5 F
( &) 164.28 713.33 T
2 F
(initialization_arguments) 182.27 713.33 T
5 F
(\051) 280.57 713.33 T
1 F
(derived syntax) 481.43 713.33 T
5 F
(\050become!) 72 703.33 T
2 F
(prototype) 125.97 703.33 T
5 F
(\051) 164.28 703.33 T
6 F
(\336) 176.27 703.33 T
5 F
( \050self\051) 186.14 703.33 T
1 F
(primitive) 503.35 703.33 T
4 F
-0.41 (The) 72 683.33 P
5 F
-0.89 (become) 92.14 683.33 P
4 F
-0.41 ( form causes the actor executing it to become an instance of) 128.12 683.33 P
7 F
-0.41 (prototype) 399.91 683.33 P
4 F
-0.41 ( after executing) 442.29 683.33 P
5 F
-0.89 (init) 516.01 683.33 P
4 F
0.02 (with the) 72 663.33 P
7 F
0.02 (initialization_arguments) 113.5 663.33 P
4 F
0.02 (.) 227.85 663.33 P
5 F
0.04 (become) 236.22 663.33 P
4 F
0.02 ( permits an implementation to construct the new instance) 272.2 663.33 P
-0.45 (in place of the actor that executes the) 72 643.33 P
5 F
-0.98 (become) 244.22 643.33 P
4 F
-0.45 (, thus there need not be any forwarding overhead as with) 280.2 643.33 P
-0.45 (the more general) 72 623.33 P
5 F
-0.98 (become) 151.89 623.33 P
4 F
-0.45 ( primitive defined in [Agha 1986].  The primitive) 187.87 623.33 P
5 F
-0.98 (become!) 411.29 623.33 P
4 F
-0.45 ( causes the current) 453.27 623.33 P
5 F
0.37 (\050self\051) 72 603.33 P
4 F
0.17 ( to become a clone of the) 107.98 603.33 P
7 F
0.17 (prototype) 223.95 603.33 P
4 F
0.17 (.  The result of the primitive is a reference to) 266.33 603.33 P
5 F
0.37 (\050self\051) 477.57 603.33 P
4 F
0.17 (.  The) 513.55 603.33 P
5 F
(become) 72 583.33 T
4 F
( syntax expands as follows:) 107.98 583.33 T
5 F
(\050become) 108 558.33 T
2 F
(prototype) 155.97 558.33 T
5 F
( &) 194.28 558.33 T
2 F
(initialization_arguments) 212.27 558.33 T
5 F
(\051) 310.57 558.33 T
2 F
(expands-to) 108 538.33 T
5 F
(\050send init \050become!) 108 518.33 T
2 F
(prototype) 227.93 518.33 T
5 F
(\051 &) 266.24 518.33 T
2 F
(initialization_arguments) 290.23 518.33 T
5 F
(\051) 388.53 518.33 T
4 F
0.02 (analogously to) 72 498.33 P
5 F
0.05 (new) 141.46 498.33 P
4 F
0.02 (.) 159.45 498.33 P
5 F
0.05 (become) 167.83 498.33 P
4 F
0.02 ( may be viewed as providing a generalized form of \322dynamic inheritance\323) 203.81 498.33 P
-0.51 (in which not only the parent of an entity is changed but its structure as well.  This is a useful technique) 72 478.33 P
0.11 (for decomposing the implementation of a data abstraction along the lines of its abstract specification.) 72 458.33 P
0.54 (For example, queues are often specified in terms of the empty queue and the non-empty queues.  In) 72 438.33 P
-0.31 (this context, it would be appropriate to define a family empty queues and non-empty queues in the im-) 72 418.33 P
(plementation.  The method for enqueueing an item on an empty queue might be written as follows:) 72 398.33 T
5 F
(\050defMethod Queue \050enq item\051 \050become QHead item\051\051) 108 373.33 T
4 F
0.5 (In this case,) 72 353.33 P
5 F
1.08 (Queue) 132.17 353.33 P
4 F
0.5 ( is the prototypical empty queue and) 162.16 353.33 P
5 F
1.08 (QHead) 337.24 353.33 P
4 F
0.5 ( the prototype for non-empty queues.) 367.23 353.33 P
0.1 (An empty queue instance then changes its behavior to that of a non-empty queue when it receives an) 72 333.33 P
5 F
(enq) 72 313.33 T
4 F
( request.) 89.99 313.33 T
FMENDPAGE
%%EndPage: "21" 20
%%Page: "20" 20
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(20) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
0.89 (entity begins processing a message it is \322locked\323 until one of these constructs is executed, at which) 72 713.33 P
-0.33 (point the actor is \322unlocked\323 and may begin processing another message.  It is worth emphasizing that) 72 693.33 P
-0.2 (until an actor is unlocked it can not process any further messages.  This is a common source of bugs in) 72 673.33 P
-0.69 (Rosette programs and manifests itself by the mysterious ceasing of computation with no result.  During) 72 653.33 P
-0.46 (the processing of a message, exactly one of these constructs should be executed.  The effect of executing) 72 633.33 P
(more than one is undefined, but may give rise to:) 72 613.33 T
5 F
(***warning: EmptyMbox::nextMsg invoked) 108 588.33 T
4 F
-0.43 (In any event, it is far more common to fail to unlock an entity than it is to issue multiple state changes.) 72 568.33 P
5 F
(\050update) 72 543.33 T
6 F
(\341) 125.97 543.33 T
2 F
(id) 129.26 543.33 T
6 F
(\361) 137.03 543.33 T
(\341) 146.32 543.33 T
2 F
(expr) 149.61 543.33 T
6 F
(\361) 167.37 543.33 T
(\274) 176.65 543.33 T
5 F
(\051) 186.65 543.33 T
1 F
(derived syntax) 481.43 543.33 T
5 F
(\050update!) 72 533.33 T
2 F
(<keyExpr>) 125.97 533.33 T
6 F
(\341) 178.2 533.33 T
2 F
(expr) 181.49 533.33 T
6 F
(\361) 199.25 533.33 T
(\274) 208.54 533.33 T
5 F
(\051) 218.53 533.33 T
6 F
(\336) 230.52 533.33 T
5 F
( \050self\051) 240.39 533.33 T
1 F
(primitive) 503.35 533.33 T
4 F
0.22 (The) 72 513.33 P
5 F
0.47 (update) 92.76 513.33 P
4 F
0.22 ( form is used to change one or more slots \050acquaintances\051 of the entity executing the) 128.74 513.33 P
5 F
0.47 (up-) 522.01 513.33 P
-0.21 (date) 72 493.33 P
4 F
-0.1 (.  As an example, if) 95.99 493.33 P
5 F
-0.21 (x) 186.3 493.33 P
4 F
-0.1 ( has the value) 192.3 493.33 P
5 F
-0.21 (4) 259.49 493.33 P
4 F
-0.1 ( and) 265.48 493.33 P
5 F
-0.21 (y) 288.25 493.33 P
4 F
-0.1 ( has the value) 294.24 493.33 P
5 F
-0.21 (2) 361.43 493.33 P
4 F
-0.1 (, and the following two forms are exe-) 367.42 493.33 P
-0.1 (cuted together \050see section) 72 473.33 P
8 F
-0.1 (5.1) 196.73 473.33 P
4 F
-0.1 (\051, the results) 210.98 473.33 P
5 F
-0.21 (4) 271.96 473.33 P
4 F
-0.1 ( and) 277.95 473.33 P
5 F
-0.21 (2) 300.72 473.33 P
4 F
-0.1 ( will be returned.  For the next message processed,) 306.71 473.33 P
(the values of) 72 453.33 T
5 F
(x) 133.46 453.33 T
4 F
( and) 139.45 453.33 T
5 F
(y) 162.41 453.33 T
4 F
( will be) 168.41 453.33 T
5 F
(3) 204.52 453.33 T
4 F
( and) 210.51 453.33 T
5 F
(8) 233.47 453.33 T
4 F
( respectively.) 239.47 453.33 T
5 F
(\050update x \050+ y 1\051 y \050* x 2\051\051) 108 428.33 T
([x y]) 108 418.33 T
4 F
0.19 (The update expression may be empty \050i.e., just) 72 398.33 P
5 F
0.4 (\050update\051) 291.18 398.33 P
4 F
0.19 (\051, which simply causes the entity to become) 339.15 398.33 P
-0.03 (unlocked with no changes in its state.  The) 72 378.33 P
5 F
-0.07 (update) 271.82 378.33 P
4 F
-0.03 ( construct is derived using the primitive) 307.8 378.33 P
5 F
-0.07 (update!) 495.24 378.33 P
4 F
-0.03 (.) 537.22 378.33 P
5 F
0.52 (update) 72 358.33 P
4 F
0.24 ( is used when all of the keys are identifiers \050which is the usual case\051; while) 107.98 358.33 P
5 F
0.52 (update!) 459.28 358.33 P
4 F
0.24 ( permits) 501.26 358.33 P
(the bindings for arbitrary keys to be modified.) 72 338.33 T
5 F
(\050next) 72 313.33 T
2 F
(enabled-set) 113.98 313.33 T
6 F
(\341) 166.05 313.33 T
2 F
(id) 169.34 313.33 T
6 F
(\361) 177.11 313.33 T
(\341) 186.4 313.33 T
2 F
(expr) 189.68 313.33 T
6 F
(\361) 207.45 313.33 T
(\274) 216.73 313.33 T
5 F
(\051) 226.73 313.33 T
1 F
(derived syntax) 481.43 313.33 T
5 F
(\050next!) 72 303.33 T
2 F
(enabled-set) 113.98 303.33 T
(<keyExpr>) 166.05 303.33 T
6 F
(\341) 218.28 303.33 T
2 F
(expr) 221.57 303.33 T
6 F
(\361) 239.33 303.33 T
(\274) 248.61 303.33 T
5 F
(\051) 258.61 303.33 T
6 F
(\336) 270.6 303.33 T
5 F
( \050self\051) 280.46 303.33 T
1 F
(primitive) 503.35 303.33 T
4 F
-0.17 (These two forms are generalizations of) 72 283.33 P
5 F
-0.37 (update) 252.18 283.33 P
4 F
-0.17 ( which permit the entity to change the) 288.16 283.33 P
7 F
-0.17 (enabled-set) 466.52 283.33 P
4 F
-0.17 ( that) 517.95 283.33 P
0.2 (will be used to accept messages when it becomes unlocked.  In Rosette 1.0, an) 72 263.33 P
7 F
0.2 (enabled-set) 435.39 263.33 P
4 F
0.2 ( is simply a) 486.82 263.33 P
5 F
0.37 (Tuple) 72 243.33 P
4 F
0.17 ( of message prefix patterns, which are in turn represented as) 101.98 243.33 P
5 F
0.37 (Tuples) 388.38 243.33 P
4 F
0.17 (.  For example, an empty) 424.36 243.33 P
-0.33 (queue might reasonably want to restrict the messages that it will accept to only) 72 223.33 P
5 F
-0.71 (enq) 437.8 223.33 P
4 F
-0.33 ( messages.  In this) 455.8 223.33 P
(case, the prefix of the message has the form) 72 203.33 T
5 F
([enq]) 276.72 203.33 T
4 F
( and the) 306.7 203.33 T
7 F
(enabled-set) 347.43 203.33 T
4 F
( would simply be) 398.86 203.33 T
5 F
([[enq]]) 479.21 203.33 T
4 F
(:) 521.18 203.33 T
5 F
(\050next [[enq]]\051) 108 178.33 T
4 F
0.17 (The above would unlock the queue entity and permit only) 72 158.33 P
5 F
0.36 (enq) 342.43 158.33 P
4 F
0.17 ( messages to be received.  For more in-) 360.42 158.33 P
(formation on enabled-sets see [Tomlinson 1989a].) 72 138.33 T
FMENDPAGE
%%EndPage: "20" 19
%%Page: "19" 19
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(19) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
0.65 (is analogous to a conventional procedure or function call.  A request to the target will yield a result) 72 713.33 P
0.26 (which is sent to the continuation of the request.  The textual position of a request expression is to be) 72 693.33 P
-0.11 (viewed as being replaced by the result of the request.  The notion of continuation is that of the actions) 72 673.33 P
0.29 (that are to occur after the result of a request has been received.  A continuation is represented as an) 72 653.33 P
0.1 (actor that waits on the result) 72 633.33 P
0.1 (and then initiates further actions.  The mail-address of the actor repre-) 210.34 633.33 P
0.1 (senting the continuation is sent \050implicitly\051 in the message.  When a request is received by the target) 72 613.33 P
-0.25 (actor it is evaluated in an environment that includes the continuation received in the request.  The re-) 72 593.33 P
(sult of the evaluation of the request is sent to this continuation.) 72 573.33 T
5 F
(\050+ 3 4\051) 108 548.33 T
6 F
(\336) 360 548.33 T
5 F
( 7) 369.86 548.33 T
(\050+ \050* 3 4\051 \050* 4 5\051\051) 108 538.33 T
6 F
(\336) 360 538.33 T
5 F
( 32) 369.86 538.33 T
4 F
0.32 (Since messages are represented via) 72 518.33 P
5 F
0.7 (Tuples) 240.21 518.33 P
4 F
0.32 ( it will sometimes be the case that the message or a part) 276.19 518.33 P
0.07 (of the message will already be available and can be sent directly to the target.  The form \322) 72 498.33 P
5 F
0.15 (&) 487.16 498.33 P
6 F
0.06 (\341) 499.3 498.33 P
7 F
0.07 (expr) 502.59 498.33 P
6 F
0.06 (\361) 522.2 498.33 P
4 F
0.07 (\323 is) 525.49 498.33 P
-0.57 (used to include the elements of a tuple in the message to be sent to some actor.  Suppose that) 72 478.33 P
5 F
-1.24 (a) 493.31 478.33 P
4 F
-0.57 ( is bound) 499.31 478.33 P
(to the tuple) 72 458.33 T
5 F
([3 4]) 128.09 458.33 T
4 F
(, then the elements of this tuple may be sent in a request to \322) 158.07 458.33 T
5 F
(+) 439.64 458.33 T
4 F
(\323 as follows:) 445.64 458.33 T
5 F
(\050+ & a\051) 108 433.33 T
6 F
(\336) 360 433.33 T
5 F
( 7) 369.86 433.33 T
4 F
-0.17 (The construct) 90 413.33 P
5 F
-0.38 (\050send) 155.91 413.33 P
6 F
-0.16 (\341) 191.51 413.33 P
7 F
-0.17 (expr) 194.8 413.33 P
6 F
-0.16 (\361) 214.41 413.33 P
-0.16 (\341) 223.32 413.33 P
7 F
-0.17 (Clause) 226.61 413.33 P
6 F
-0.16 (\361) 257.87 413.33 P
5 F
-0.38 (\051) 261.16 413.33 P
4 F
-0.17 ( sends the message resulting from) 267.16 413.33 P
6 F
-0.16 (\341) 426.41 413.33 P
7 F
-0.17 (Clause) 429.7 413.33 P
6 F
-0.16 (\361) 460.96 413.33 P
4 F
-0.17 ( to the target ac-) 464.25 413.33 P
-0.03 (tor resulting from) 72 393.33 P
6 F
-0.03 (\341) 157.04 393.33 P
7 F
-0.03 (expr) 160.33 393.33 P
6 F
-0.03 (\361) 179.94 393.33 P
4 F
-0.03 ( and does not produce a result.  The send expression may be viewed as a com-) 183.23 393.33 P
-0.28 (mand.  That is, an action is initiated that is intended to cause some effects and not to produce a result.) 72 373.33 P
-0.09 (The message is sent asynchronously to the target actor.  In the example below, a queue actor is sent a) 72 353.33 P
0.1 (message to update the queue with a new entry.  No result is to be produced, just the side effect of the) 72 333.33 P
(update.) 72 313.33 T
5 F
(\050send enq a-queue 3\051) 108 288.33 T
6 F
(\336) 360 288.33 T
2 F
(no result) 375.86 288.33 T
4 F
0.21 (In concurrent programs, it is often the case that multiple items of information are generated and) 90 268.33 P
0.16 (to be sent to the continuation for distribution among several points of use.  In Rosette this simply ac-) 72 248.33 P
0.32 (complished by returning a) 72 228.33 P
5 F
0.7 (Tuple) 197.3 228.33 P
4 F
0.32 ( consisting of the multiple items.  The binding constructs discussed) 227.29 228.33 P
(later in section) 72 208.33 T
8 F
(5.3) 143.82 208.33 T
4 F
( make it particularly easy to destructure multiple values returned in this way.) 158.07 208.33 T
3 12 Q
(4.5.) 72 177 T
(Modifying behavior) 108 177 T
4 10 Q
-0.58 (The Actor model specifies that there are three basic capabilities of any actor: creating new actors, send-) 72 158.33 P
0.08 (ing messages, and changing behavior.  The first two capabilities have already been introduced in sec-) 72 138.33 P
0.2 (tions) 72 118.33 P
8 F
0.21 (4.3.1) 97.75 118.33 P
4 F
0.2 ( and) 120.51 118.33 P
8 F
0.21 (4.4) 143.87 118.33 P
4 F
0.2 (.  The third basic capability is provided by the constructs discussed in this section.) 158.12 118.33 P
0.34 (They are used to change the behavior of an entity for the next message that it processes.  They have) 72 98.33 P
-0.09 (no effect on the execution of the entity with respect to the current message being processed.  When an) 72 78.33 P
FMENDPAGE
%%EndPage: "19" 18
%%Page: "18" 18
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(18) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 63 540 720 R
V
3 F
0 X
(4.3.3.) 72 713.33 T
(Built-in procedures) 108 713.33 T
4 F
0.29 (For each behavior to which an operation given above applies, there is a procedure that is used to) 90 688.33 P
0.45 (perform the task.  Many of these procedures are implemented primitively in the Rosette virtual ma-) 72 668.33 P
-0.58 (chine and are available in the initial environment.  Their names may be determined from the operation) 72 648.33 P
0.04 (name and name of the most general kind of entity to which they apply.  There are three exceptions to) 72 628.33 P
0.35 (this rule: the names of primitive methods on) 72 608.33 P
5 F
0.76 (Fixnums) 282.88 608.33 P
4 F
0.35 ( are prefixed with) 324.86 608.33 P
5 F
0.76 (fx) 411.04 608.33 P
4 F
0.35 (, for) 423.04 608.33 P
5 F
0.76 (Floats) 444.84 608.33 P
4 F
0.35 ( the prefix is) 480.82 608.33 P
5 F
-0.76 (fl) 72 588.33 P
4 F
-0.35 (, and for) 83.99 588.33 P
5 F
-0.76 (Chars) 124.21 588.33 P
4 F
-0.35 ( it is) 154.2 588.33 P
5 F
-0.76 (ch) 176.28 588.33 P
4 F
-0.35 (.  The rule for non-coercer operations is to prefix the operation name with the) 188.28 588.33 P
0.15 (kind name in lower case followed by a) 72 568.33 P
5 F
0.33 (-) 250.75 568.33 P
4 F
0.15 ( \050dash\051 if the operation name begins with an alphabetic char-) 256.74 568.33 P
-0.15 (acter.  For example, the primitive method corresponding to) 72 548.33 P
5 F
-0.33 (size) 345.66 548.33 P
4 F
-0.15 ( on) 369.64 548.33 P
5 F
-0.33 (Strings) 386 548.33 P
4 F
-0.15 ( is) 427.97 548.33 P
5 F
-0.33 (string-size) 441 548.33 P
4 F
-0.15 (.  If the) 506.96 548.33 P
0.35 (operation name begins with an extended alphabetic character, no) 72 528.33 P
5 F
0.75 (-) 379.61 528.33 P
4 F
0.35 ( is used.  For example, the proce-) 385.61 528.33 P
-0.43 (dure corresponding to) 72 508.33 P
5 F
-0.92 (=) 174.35 508.33 P
4 F
-0.43 ( on) 180.35 508.33 P
5 F
-0.92 (Fixnums) 196.15 508.33 P
4 F
-0.43 ( is) 238.13 508.33 P
5 F
-0.92 (fx=) 250.6 508.33 P
4 F
-0.43 (.  The full name of a coercion procedure is obtained by using) 268.6 508.33 P
1.31 (the above rule for regular operations on the name of a specific coercion operation. For example,) 72 488.33 P
5 F
2.82 (-) 534 488.33 P
2.77 (>string) 72 468.33 P
4 F
1.28 ( as an operation on) 113.98 468.33 P
5 F
2.77 (Symbols) 211.1 468.33 P
4 F
1.28 ( corresponds to a primitive method with the name) 253.07 468.33 P
5 F
2.77 (symbol-) 498.02 468.33 P
-0.11 (>string) 72 448.33 P
4 F
-0.05 (.  It should be emphasized that this naming approach is purely a convention for choosing the) 113.98 448.33 P
1.64 (identifiers in the initial environment and has no operational significance.  \050The reader should be) 72 428.33 P
0.67 (warned that in the 1.0 release of Rosette the naming of primitive methods has not necessarily been) 72 408.33 P
(rigorously followed.\051) 72 388.33 T
3 12 Q
(4.4.) 72 357 T
(Communication constructs) 108 357 T
5 10 Q
(\050) 72 338.33 T
6 F
(\341) 78 338.33 T
2 F
(expr) 81.29 338.33 T
6 F
(\361) 99.04 338.33 T
(\341) 108.33 338.33 T
2 F
(Clause) 111.62 338.33 T
6 F
(\361) 139.38 338.33 T
5 F
(\051) 142.67 338.33 T
6 F
(\336) 154.66 338.33 T
2 F
(result) 170.53 338.33 T
1 F
(basic syntax) 490.87 338.33 T
5 F
(\050send) 72 328.33 T
6 F
(\341) 107.98 328.33 T
2 F
(expr) 111.27 328.33 T
6 F
(\361) 129.03 328.33 T
(\341) 138.31 328.33 T
2 F
(Clause) 141.6 328.33 T
6 F
(\361) 169.37 328.33 T
5 F
(\051) 172.65 328.33 T
1 F
(special form) 490.32 328.33 T
4 F
-0.22 (One of the fundamental capabilities of actors according to the Actor model is that of sending messages) 72 308.33 P
0.66 (to other actors.  The communication constructs are the Rosette notation for sending messages.  The) 72 288.33 P
6 F
-0.6 (\341) 72 268.33 P
7 F
-0.67 (expr) 75.29 268.33 P
6 F
-0.6 (\361) 94.9 268.33 P
4 F
-0.67 ( is an expression that evaluates to the entity which is the target of the communication.  A) 98.19 268.33 P
6 F
-0.6 (\341) 502.16 268.33 P
7 F
-0.67 (Clause) 505.45 268.33 P
6 F
-0.6 (\361) 536.71 268.33 P
4 F
(has one of the two forms:) 72 248.33 T
6 F
(\341) 108 228.33 T
2 F
(expr) 111.29 228.33 T
6 F
(\361) 129.05 228.33 T
(\274) 138.33 228.33 T
1 F
(or) 184.31 228.33 T
6 F
(\341) 222.62 228.33 T
2 F
(expr) 225.9 228.33 T
6 F
(\361) 243.66 228.33 T
(\274) 252.95 228.33 T
5 F
( &) 262.95 228.33 T
6 F
(\341) 280.93 228.33 T
2 F
(expr) 284.22 228.33 T
6 F
(\361) 301.98 228.33 T
4 F
0.02 (The) 72 208.33 P
6 F
0.02 (\341) 92.57 208.33 P
7 F
0.02 (Clause) 95.86 208.33 P
6 F
0.02 (\361) 127.12 208.33 P
4 F
0.02 ( is a sequence of 0 or more expressions that are evaluated to determine the message that) 130.41 208.33 P
-0.04 (is to be sent to the target.  The last portion of the) 72 188.33 P
6 F
-0.04 (\341) 300.83 188.33 P
7 F
-0.04 (Clause) 304.12 188.33 P
6 F
-0.04 (\361) 335.39 188.33 P
4 F
-0.04 ( may be of the form \322) 338.67 188.33 P
5 F
-0.09 (&) 434.32 188.33 P
6 F
-0.04 (\341) 446.22 188.33 P
7 F
-0.04 (expr) 449.51 188.33 P
6 F
-0.04 (\361) 469.12 188.33 P
4 F
-0.04 (\323.  This form is) 472.41 188.33 P
-0.16 (used to include a variable number of elements in the message.  Both) 72 168.33 P
6 F
-0.14 (\341) 387.75 168.33 P
7 F
-0.16 (expr) 391.04 168.33 P
6 F
-0.14 (\361) 410.65 168.33 P
4 F
-0.16 ( and) 413.94 168.33 P
6 F
-0.14 (\341) 436.58 168.33 P
7 F
-0.16 (Clause) 439.86 168.33 P
6 F
-0.14 (\361) 471.13 168.33 P
4 F
-0.16 ( are evaluated) 474.42 168.33 P
0.55 (concurrently.  In practice, this will often mean that they are evaluated in some indeterminate order) 72 148.33 P
(\050possibly in parallel\051 and the semantics of a program can not depend upon any specific order.) 72 128.33 T
-0.31 (The request expression) 90 103.33 P
5 F
-0.68 (\050) 198.81 103.33 P
6 F
-0.28 (\341) 204.81 103.33 P
7 F
-0.31 (expr) 208.1 103.33 P
6 F
-0.28 (\361) 227.71 103.33 P
-0.28 (\341) 236.31 103.33 P
7 F
-0.31 (Clause) 239.6 103.33 P
6 F
-0.28 (\361) 270.86 103.33 P
5 F
-0.68 (\051) 274.15 103.33 P
4 F
-0.31 ( sends the message that results from evaluating) 280.15 103.33 P
6 F
-0.28 (\341) 502.16 103.33 P
7 F
-0.31 (Clause) 505.45 103.33 P
6 F
-0.28 (\361) 536.71 103.33 P
4 F
-0.29 (to the target entity that results from evaluating) 72 83.33 P
6 F
-0.26 (\341) 293.49 83.33 P
7 F
-0.29 (expr) 296.78 83.33 P
6 F
-0.26 (\361) 316.39 83.33 P
4 F
-0.29 ( \050usually the target is an) 319.68 83.33 P
5 F
-0.62 (Oprn) 434.58 83.33 P
4 F
-0.29 ( or) 458.57 83.33 P
5 F
-0.62 (SyncOprn) 472.98 83.33 P
4 F
-0.29 (\051.  It) 520.96 83.33 P
FMENDPAGE
%%EndPage: "18" 17
%%Page: "17" 17
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(17) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(\050show-code new \325a\051) 108 713.33 T
2 F
(displays) 221.94 713.33 T
5 F
(litvec:) 108 693.33 T
(   0:   {MethodExpr}) 108 683.33 T
(   1:   {Template}) 108 673.33 T
(codevec:) 108 663.33 T
(   0:   extend 1) 108 653.33 T
(   3:   alloc 2) 108 643.33 T
(   6:   self 0, arg[0]) 108 633.33 T
(  10:   clone 1, arg[0]) 108 623.33 T
(  14:   xfer lex[0,0], arg[1]) 108 613.33 T
(  17:   xfer global[269], trgt) 108 603.33 T
(  21:   xmit/unwind/nxt 1) 108 593.33 T
4 F
-0.42 (Briefly and referring to the example above for) 72 573.33 P
5 F
-0.91 (source@) 282.95 573.33 P
4 F
-0.42 (, the new method adds an environment contour) 324.92 573.33 P
-0.25 (to the receiver of the) 72 553.33 P
5 F
-0.53 (new) 168.68 553.33 P
4 F
-0.25 ( message \050e.g.,) 186.67 553.33 P
5 F
-0.53 (\325a) 255.36 553.33 P
4 F
-0.25 (\051 via) 267.35 553.33 P
5 F
-0.53 (extend) 289.82 553.33 P
4 F
-0.25 (, a new message to hold two arguments is built) 325.8 553.33 P
-0.2 (via) 72 533.33 P
5 F
-0.43 (alloc 2) 88.65 533.33 P
4 F
-0.2 (, the) 130.2 533.33 P
5 F
-0.43 (self) 153.13 533.33 P
4 F
-0.2 ( primitive is executed leaving its result in the first argument position \050) 177.12 533.33 P
5 F
-0.43 (arg[0]) 500.69 533.33 P
4 F
-0.2 (\051) 536.67 533.33 P
1.1 (of the new message, the) 72 513.33 P
5 F
2.37 (clone) 190.41 513.33 P
4 F
1.1 ( primitive is executed on the result of) 220.39 513.33 P
5 F
2.37 (self) 404.09 513.33 P
4 F
1.1 ( and its result is left in) 428.08 513.33 P
5 F
-1.27 (arg[0]) 72 493.33 P
4 F
-0.59 ( and the initialization arguments \050) 107.98 493.33 P
5 F
-1.27 (args) 264.41 493.33 P
4 F
-0.59 ( above\051 are transferred to) 288.4 493.33 P
5 F
-1.27 (arg[1]) 405.57 493.33 P
4 F
-0.59 (, the binding for) 441.55 493.33 P
5 F
-1.27 (init) 516.01 493.33 P
4 F
-0.09 (in the) 72 473.33 P
5 F
-0.2 (Global) 101.61 473.33 P
4 F
-0.09 ( environment is put in the) 137.6 473.33 P
5 F
-0.2 (trgt) 260.49 473.33 P
4 F
-0.09 ( register of the virtual machine and finally the message) 284.48 473.33 P
-0.43 (is) 72 453.33 P
5 F
-0.93 (xmit) 82.12 453.33 P
4 F
-0.43 (ed after) 106.11 453.33 P
5 F
-0.93 (unwind) 143.75 453.33 P
4 F
-0.43 (ing the) 179.73 453.33 P
5 F
-0.93 (args) 214.04 453.33 P
4 F
-0.43 ( into the message and control of the virtual machine is transferred) 238.03 453.33 P
-0.53 (to the) 72 433.33 P
5 F
-1.15 (nxt) 100.37 433.33 P
4 F
-0.53 ( available piece of work.  The result of the) 118.36 433.33 P
5 F
-1.15 (init) 308.7 433.33 P
4 F
-0.53 ( operation will be returned to the context that) 332.69 433.33 P
(invoked) 72 413.33 T
5 F
(new) 111.06 413.33 T
4 F
(.) 129.05 413.33 T
5 F
(\050->) 72 388.33 T
2 F
(any) 95.99 388.33 T
5 F
(\051) 110.42 388.33 T
6 F
(\336) 118.91 388.33 T
2 F
(operation) 134.77 388.33 T
1 F
(operation) 502.25 388.33 T
4 F
-0.4 (The) 72 368.33 P
5 F
-0.85 (->) 92.15 368.33 P
4 F
-0.4 ( operation, when defined on an object, yields an operation that can be used to coerce other kinds) 104.15 368.33 P
-0.16 (of objects to its own kind.  \050See sections) 72 348.33 P
8 F
-0.17 (7.4) 254.91 348.33 P
4 F
-0.16 (,) 269.17 348.33 P
8 F
-0.17 (7.5) 274.56 348.33 P
4 F
-0.16 (, and) 288.81 348.33 P
8 F
-0.17 (7.7) 314.23 348.33 P
4 F
-0.16 ( for examples.\051  The coercion protocol provides) 328.48 348.33 P
0.33 (an interface that allows a program to perform coercions or conversions on arbitrary types of entities,) 72 328.33 P
0.22 (and is an example of a higher-order use of operations.   The coercion protocol is modeled after that of) 72 308.33 P
-0.05 ([Lang and Perlmutter 1986].  In the initial environment, specific coercion operations on various built-) 72 288.33 P
-0.15 (in objects are given names.  The names are derived from the name of the generator object by prefixing) 72 268.33 P
5 F
2.38 (->) 72 248.33 P
4 F
1.1 ( to the name of the generator object in lowercase.  For example, the operation) 83.99 248.33 P
5 F
2.38 (\050-> String\051) 460 248.33 P
4 F
1.1 ( is) 528.34 248.33 P
0.08 (named) 72 228.33 P
5 F
0.18 ( ->string) 103.28 228.33 P
4 F
0.08 ( in the initial environment.  Thus, in the initial environment the following produce) 157.43 228.33 P
(equivalent results:) 72 208.33 T
5 F
(\050\050-> String\051 23\051) 108 183.34 T
6 F
(\336) 360 183.34 T
5 F
( "23") 369.86 183.34 T
4 F
(and) 72 163.34 T
5 F
(\050->string 23\051) 108 138.34 T
6 F
(\336) 360 138.34 T
5 F
( "23") 369.86 138.34 T
4 F
(This protocol is provided so that there is a uniform and extensible approach to type coercions.) 72 118.34 T
FMENDPAGE
%%EndPage: "17" 16
%%Page: "16" 16
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(16) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
-0.4 (the next object to be searched will be) 72 713.33 P
5 F
-0.86 ({Indexable SBO}) 241.34 713.33 P
4 F
-0.4 ( and if that fails then) 330.43 713.33 P
5 F
-0.86 ({Expr SBO}) 428.93 713.33 P
4 F
-0.4 ( and failing) 488.04 713.33 P
(that the search continues with the) 72 693.33 T
5 F
(\050parent {Expr SBO}\051) 233.59 693.33 T
4 F
(.) 347.53 693.33 T
5 F
(\050source@) 72 668.33 T
2 F
(any) 125.97 668.33 T
5 F
(\051) 140.4 668.33 T
6 F
(\336) 148.9 668.33 T
2 F
(expr) 164.76 668.33 T
1 F
(sync-operation) 480.6 668.33 T
5 F
(\050source@) 72 658.33 T
2 F
(any) 125.97 658.33 T
1 8 Q
(1) 140.4 654.33 T
2 10 Q
(any) 150.4 658.33 T
1 8 Q
(2) 164.83 654.33 T
5 10 Q
(\051) 168.83 658.33 T
6 F
(\336) 177.32 658.33 T
2 F
(expr) 193.18 658.33 T
1 F
(sync-operation) 480.6 658.33 T
4 F
-0.57 (The) 72 635 P
5 F
-1.23 (source@) 91.98 635 P
4 F
-0.57 ( operation retrieves the source expression for) 133.96 635 P
7 F
-0.57 (any) 340.59 635 P
4 F
-0.57 ( entity or for the binding of) 357.43 635 P
7 F
-0.57 (any) 480.98 635 P
4 8 Q
-0.46 (1) 497.82 631 P
4 10 Q
-0.57 ( in) 502.26 635 P
7 F
-0.57 (any) 515.93 635 P
4 8 Q
-0.46 (2) 532.78 631 P
4 10 Q
-0.57 (.) 537.22 635 P
-0.28 (If there is no binding for) 72 611.67 P
7 F
-0.28 (any) 185.6 611.67 P
4 8 Q
-0.23 (1) 202.44 607.67 P
4 10 Q
-0.28 ( in) 206.88 611.67 P
7 F
-0.28 (any) 221.13 611.67 P
4 8 Q
-0.23 (2) 237.97 607.67 P
4 10 Q
-0.28 ( then) 242.41 611.67 P
5 F
-0.61 (#absent) 268.5 611.67 P
4 F
-0.28 ( is returned.  If) 310.48 611.67 P
7 F
-0.28 (any) 381.61 611.67 P
4 F
-0.28 ( is a Rosette procedure then its) 398.45 611.67 P
0.04 (source is returned, otherwise the standard source for an object is returned.  The standard response of) 72 588.33 P
(an object when invoked is to return itself and the standard source reflects this.  For example:) 72 568.33 T
5 F
(\050source@ 1\051) 108 543.33 T
6 F
(\336) 203.95 543.33 T
5 F
( \325\050pure [] \050self\051\051) 213.81 543.33 T
(\050source@ new 1\051) 108 533.33 T
6 F
(\336) 203.95 533.33 T
5 F
( \325\050method [& args] \050init \050clone \050self\051\051 & args\051) 213.81 533.33 T
(\050formals@) 72 513.33 T
2 F
(any) 131.97 513.33 T
5 F
(\051) 146.4 513.33 T
6 F
(\336) 154.89 513.33 T
2 F
(tupleExpr) 170.76 513.33 T
1 F
(sync-operation) 480.6 513.33 T
5 F
(\050formals@) 72 503.33 T
2 F
(any) 131.97 503.33 T
1 8 Q
(1) 146.4 499.33 T
2 10 Q
(any) 156.39 503.33 T
1 8 Q
(2) 170.83 499.33 T
5 10 Q
(\051) 174.82 503.33 T
6 F
(\336) 183.32 503.33 T
2 F
(tupleExpr) 199.18 503.33 T
1 F
(sync-operation) 480.6 503.33 T
4 F
0.01 (Similar to) 72 480 P
5 F
0.01 (source@) 121.07 480 P
4 F
0.01 (, the operation) 163.05 480 P
5 F
0.01 (formals@) 233.04 480 P
4 F
0.01 ( will return the) 281.02 480 P
7 F
0.01 (tupleExpr) 354.34 480 P
4 F
0.01 ( that represents the pattern of) 399.86 480 P
(messages accepted by an entity.  For example,) 72 460 T
5 F
(\050formals@ 1\051) 108 435 T
6 F
(\336) 185.96 435 T
5 F
( \325[]) 195.82 435 T
(\050formals@ new 1\051) 108 425 T
6 F
(\336) 209.94 425 T
5 F
( \325[& args]) 219.81 425 T
4 F
0.15 (This operation is particularly useful in determining the calling sequence expected by an operation on) 72 405 P
(an object.  If) 72 385 T
7 F
(any) 131.79 385 T
4 8 Q
(1) 148.63 381 T
4 10 Q
( is not bound in) 153.07 385 T
7 F
(any) 227.49 385 T
4 8 Q
(2) 244.33 381 T
4 10 Q
( then) 248.78 385 T
5 F
(#absent) 275.43 385 T
4 F
( is returned.) 317.41 385 T
5 F
(\050code@) 72 356.67 T
2 F
(any) 113.98 356.67 T
5 F
(\051) 128.41 356.67 T
6 F
(\336) 136.9 356.67 T
2 F
(code) 152.77 356.67 T
1 F
(sync-operation) 480.6 356.67 T
5 F
(\050code@) 72 346.67 T
2 F
(any) 113.98 346.67 T
1 8 Q
(1) 128.41 342.67 T
2 10 Q
(any) 138.4 346.67 T
1 8 Q
(2) 152.84 342.67 T
5 10 Q
(\051) 156.83 346.67 T
6 F
(\336) 165.33 346.67 T
2 F
(code) 181.19 346.67 T
1 F
(sync-operation) 480.6 346.67 T
4 F
0.17 (The Rosette system compiles expressions to a byte code sequence in order to evaluate the expression.) 72 323.33 P
0.17 (The) 72 303.33 P
5 F
0.37 (code@) 92.72 303.33 P
4 F
0.17 ( operation returns this) 122.7 303.33 P
7 F
0.17 (code) 230.74 303.33 P
4 F
0.17 ( object or) 250.72 303.33 P
5 F
0.37 (#absent) 295.84 303.33 P
4 F
0.17 ( if) 337.82 303.33 P
7 F
0.17 (any) 350.19 303.33 P
4 8 Q
0.14 (1) 367.03 299.33 P
4 10 Q
0.17 ( is not bound in) 371.48 303.33 P
7 F
0.17 (any) 446.76 303.33 P
4 8 Q
0.14 (2) 463.6 299.33 P
4 10 Q
0.17 (.  A related and) 468.04 303.33 P
(perhaps more instructive operation is:) 72 280 T
5 F
(\050show-code) 72 255 T
2 F
(any) 137.96 255 T
5 F
(\051) 152.4 255 T
6 F
(\336) 160.89 255 T
5 F
( #niv) 170.76 255 T
1 F
(sync-operation) 480.6 255 T
5 F
(\050show-code) 72 245 T
2 F
(any) 137.96 245 T
1 8 Q
(1) 152.4 241 T
2 10 Q
(any) 162.39 245 T
1 8 Q
(2) 176.82 241 T
5 10 Q
(\051) 180.82 245 T
6 F
(\336) 189.32 245 T
5 F
( #niv) 199.18 245 T
1 F
(sync-operation) 480.6 245 T
4 F
-0.19 (This operation disassembles the) 72 221.67 P
7 F
-0.19 (code) 222.31 221.67 P
4 F
-0.19 ( object that is returned by) 242.29 221.67 P
5 F
-0.4 (code@) 363.52 221.67 P
4 F
-0.19 ( and displays it on) 393.51 221.67 P
5 F
-0.4 (stdout) 479.96 221.67 P
7 F
-0.19 (.) 515.94 221.67 P
4 F
-0.19 (  For) 518.72 221.67 P
(example,) 72 201.67 T
FMENDPAGE
%%EndPage: "16" 15
%%Page: "15" 15
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(15) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
0.88 (The) 72 713.33 P
5 F
1.89 (lookup) 93.42 713.33 P
4 F
0.88 ( primitive will return the entity bound to) 129.4 713.33 P
7 F
0.88 (any) 328.36 713.33 P
4 8 Q
0.7 (1) 345.2 709.33 P
4 10 Q
0.88 ( in the entity returned by) 349.65 713.33 P
5 F
1.89 (\050where) 474.85 713.33 P
7 F
0.88 (any) 518.71 713.33 P
4 8 Q
0.7 (1) 535.55 709.33 P
7 10 Q
(any) 72 690 T
4 8 Q
(2) 88.84 686 T
5 10 Q
(\051) 93.29 690 T
4 F
(.  Thus:) 99.28 690 T
5 F
(\050lookup map \325[a b]\051) 108 661.67 T
6 F
(\336) 227.93 661.67 T
5 F
( {Method instance}) 237.8 661.67 T
4 F
-0.09 (yields the Rosette method object that implements the) 72 641.67 P
5 F
-0.2 (map) 320.43 641.67 P
4 F
-0.09 ( operation on) 338.42 641.67 P
5 F
-0.2 (TupleExprs) 401.45 641.67 P
4 F
-0.09 (.  If the slot iden-) 461.42 641.67 P
(tified by) 72 621.67 T
7 F
(any) 112.73 621.67 T
4 8 Q
(1) 129.57 617.67 T
4 10 Q
( is not defined on) 134.01 621.67 T
7 F
(any) 215.83 621.67 T
4 8 Q
(2) 232.67 617.67 T
4 10 Q
( then the result of) 237.12 621.67 T
5 F
(lookup) 322.63 621.67 T
4 F
( will be the constant) 358.61 621.67 T
5 F
(#absent) 454.88 621.67 T
4 F
(.) 496.85 621.67 T
-0.27 (The following operations may be used to browse through the Rosette system.  They may be used in) 90 593.33 P
0.01 (conjunction with the above operations on the inheritance hierarchy to investigate the structure of the) 72 573.33 P
0.73 (Rosette system.  Eventually, graphical interfaces will be provided to make this process more conve-) 72 553.33 P
(nient.) 72 533.33 T
5 F
(\050kind) 72 508.33 T
2 F
(any) 107.98 508.33 T
5 F
(\051) 122.41 508.33 T
6 F
(\336) 134.41 508.33 T
2 F
(symbol) 150.27 508.33 T
1 F
(sync-operation) 480.6 508.33 T
4 F
0.16 (Every entity in the Rosette system answers to the) 72 488.33 P
5 F
0.34 (kind) 306.48 488.33 P
4 F
0.16 ( operation with a symbol that names the pro-) 330.47 488.33 P
(totype from which the object was cloned.  Thus,) 72 468.33 T
5 F
(\050kind 1\051) 108 443.33 T
6 F
(\336) 179.96 443.33 T
5 F
( \325Fixnum) 189.82 443.33 T
(\050kind 1.1\051) 108 433.33 T
6 F
(\336) 179.96 433.33 T
5 F
( \325Float) 189.82 433.33 T
(\050kind \325[1]\051) 108 423.33 T
6 F
(\336) 179.96 423.33 T
5 F
( \325TupleExpr) 189.82 423.33 T
(\050kind kind\051) 108 413.33 T
6 F
(\336) 179.96 413.33 T
5 F
( \325SyncOprn) 189.82 413.33 T
(\050describe) 72 393.33 T
2 F
(any) 131.97 393.33 T
5 F
(\051) 146.4 393.33 T
6 F
(\336) 154.89 393.33 T
5 F
( #niv) 164.76 393.33 T
1 F
(sync-operation) 480.6 393.33 T
5 F
(\050describe) 72 383.33 T
2 F
(Ostream) 131.97 383.33 T
(any) 172.38 383.33 T
5 F
(\051) 186.82 383.33 T
6 F
(\336) 195.31 383.33 T
5 F
( #niv) 205.18 383.33 T
1 F
(sync-operation) 480.6 383.33 T
4 F
0.24 (It is often very useful to obtain a simple description of an entity.  For this purpose the) 72 363.33 P
5 F
0.51 (describe) 474.95 363.33 P
4 F
0.24 ( op-) 522.92 363.33 P
-0.14 (eration is provided.  For atoms, the result is simply to render the atom on either) 72 343.33 P
5 F
-0.3 (stdout) 442.39 343.33 P
4 F
-0.14 ( or on the) 478.37 343.33 P
7 F
-0.14 (Os-) 524.46 343.33 P
-0.32 (tream) 72 323.33 P
4 F
-0.32 ( provided.  For other kinds of entities the) 99.01 323.33 P
5 F
-0.68 (kind) 288.3 323.33 P
4 F
-0.32 ( and the \322role\323 of the entity in the system is given:) 312.28 323.33 P
5 F
(\050describe 1\051) 108 298.33 T
2 F
(displays) 257.92 298.33 T
5 F
( 1) 290.68 298.33 T
(\050describe \325[1]\051) 108 288.33 T
2 F
(displays) 257.92 288.33 T
5 F
( {TupleExpr instance}) 290.68 288.33 T
(\050describe \050parent \325[1]\051\051) 108 278.33 T
2 F
(displays) 257.92 278.33 T
5 F
( {TupleExpr SBO}) 290.68 278.33 T
(\050examine) 72 258.33 T
2 F
(any) 125.97 258.33 T
5 F
(\051) 140.4 258.33 T
6 F
(\336) 148.9 258.33 T
5 F
( #niv) 158.76 258.33 T
1 F
(sync-operation) 480.6 258.33 T
5 F
(\050examine) 72 248.33 T
2 F
(Ostream) 125.97 248.33 T
(any) 166.39 248.33 T
5 F
(\051) 180.82 248.33 T
6 F
(\336) 189.32 248.33 T
5 F
( #niv) 199.18 248.33 T
1 F
(sync-operation) 480.6 248.33 T
4 F
0.03 (The) 72 228.33 P
5 F
0.05 (examine) 92.57 228.33 P
4 F
0.03 ( operation may be used with any entity to obtain a display of the structure of the entity.) 134.55 228.33 P
-0.3 (The result is rendered on either) 72 208.33 P
5 F
-0.65 (stdout) 219.74 208.33 P
4 F
-0.3 ( or on the) 255.72 208.33 P
7 F
-0.3 (Ostream) 301.16 208.33 P
4 F
-0.3 ( provided.  Using the) 340.39 208.33 P
5 F
-0.65 (examine) 438.1 208.33 P
4 F
-0.3 ( operation on) 480.08 208.33 P
(the) 72 188.33 T
5 F
(\050parent \050sbo \325[a b]\051\051) 89.77 188.33 T
4 F
( from above gives the following:) 215.7 188.33 T
5 F
({MIObject: Parent={MIObject SBO},) 108 163.33 T
(           Slots=[\325cpl [{Indexable SBO} {Expr SBO}]]}) 108 153.33 T
4 F
1.01 (This shows that an) 72 133.34 P
5 F
2.19 (MIObject) 166.95 133.34 P
4 F
1.01 ( has a slot called) 214.93 133.34 P
5 F
2.19 (\325cpl) 299.42 133.34 P
4 F
1.01 ( \050for class precedence list\051 which includes two) 323.4 133.34 P
-0.2 (shared behavior objects.  Thus if a slot is not found in either a) 72 113.34 P
5 F
-0.43 (TupleExpr) 357.62 113.34 P
4 F
-0.2 ( or its immediate SBO, then) 411.59 113.34 P
FMENDPAGE
%%EndPage: "15" 14
%%Page: "14" 14
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(14) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(\050sbo 23\051) 108 713.33 T
6 F
(\336) 360 713.33 T
5 F
( {Fixnum SBO}) 369.86 713.33 T
(\050parent) 72 693.33 T
2 F
(any) 119.97 693.33 T
5 F
(\051) 134.41 693.33 T
6 F
(\336) 142.9 693.33 T
2 F
(any) 158.76 693.33 T
1 F
(primitive) 503.35 693.33 T
4 F
0.25 (The) 72 673.33 P
5 F
0.53 (parent) 92.79 673.33 P
4 F
0.25 ( primitive is applicable to any entity whatsoever in the Rosette environment and will re-) 128.77 673.33 P
-0.33 (turn the next entity in the inheritance hierarchy.  Rosette permits any entity to inherit from any other) 72 653.33 P
(entity.  For example, a point actor could inherit from another point actor.  Thus, in general:) 72 633.33 T
5 F
(\050sbo) 108 608.33 T
2 F
(any) 137.98 608.33 T
5 F
(\051 != \050parent) 152.42 608.33 T
2 F
(any) 230.37 608.33 T
5 F
(\051) 244.8 608.33 T
4 F
-0.22 (Further, in Rosette a specialized family of objects, called) 72 588.33 P
5 F
-0.46 (MIObjects) 333.28 588.33 P
4 F
-0.22 ( \050for Multiple Inheritance Object\051) 387.25 588.33 P
-0.3 (are used to provide the basic multiple-inheritance protocol \050see section) 72 568.33 P
8 F
-0.31 (8.5) 396.95 568.33 P
4 F
-0.3 (\051.  These objects manage the) 411.2 568.33 P
-0.45 (search among multiple parents and are not the direct repositories of inherited slots.  Thus, the) 72 548.33 P
5 F
-0.97 (parent) 504.02 548.33 P
4 F
0.21 (primitive will not necessarily yield the next object from which slots will be inherited by an object.  In) 72 528.33 P
-0.33 (order to correctly identify the next object from which slots will be inherited the) 72 508.33 P
5 F
-0.7 (parent-wrt) 433.71 508.33 P
4 F
-0.33 ( operation) 493.68 508.33 P
(is provided.) 72 488.33 T
5 F
(\050parent-wrt) 72 463.33 T
2 F
(any) 143.96 463.33 T
1 8 Q
(1) 158.39 459.33 T
2 10 Q
(any) 168.39 463.33 T
1 8 Q
(2) 182.82 459.33 T
5 10 Q
(\051) 186.82 463.33 T
6 F
(\336) 195.31 463.33 T
2 F
(any) 211.17 463.33 T
1 F
(sync-operation) 480.6 463.33 T
4 F
-0.27 (The) 72 440 P
5 F
-0.59 (parent-wrt) 92.28 440 P
4 F
-0.27 ( synchronous operation returns the next object that will be searched after) 152.24 440 P
7 F
-0.27 (any) 491.22 440 P
4 8 Q
-0.22 (2) 508.06 436 P
4 10 Q
-0.27 ( when) 512.51 440 P
(starting at) 72 416.67 T
7 F
(any) 124.02 416.67 T
4 8 Q
(1) 140.86 412.67 T
4 10 Q
(.  For example:) 145.31 416.67 T
5 F
(\050parent-wrt \325[a b] \050sbo \325[a b]\051\051) 108 388.33 T
6 F
(\336) 305.89 388.33 T
5 F
( {Indexable SBO}) 315.76 388.33 T
4 F
(but) 72 368.33 T
5 F
(\050parent \050sbo \325[a b]\051\051) 108 343.33 T
6 F
(\336) 239.93 343.33 T
5 F
( {MIObject instance}) 249.79 343.33 T
(\050where) 72 323.33 T
2 F
(any) 113.98 323.33 T
1 8 Q
(1) 128.41 319.33 T
2 10 Q
(any) 138.4 323.33 T
1 8 Q
(2) 152.84 319.33 T
5 10 Q
(\051) 156.83 323.33 T
6 F
(\336) 165.33 323.33 T
2 F
(any) 181.19 323.33 T
1 F
(sync-operation) 480.6 323.33 T
4 F
-0.4 (Related to) 72 300 P
5 F
-0.86 (parent-wrt) 121.18 300 P
4 F
-0.4 ( is the) 181.15 300 P
5 F
-0.86 (where) 211.05 300 P
4 F
-0.4 ( operation which returns the object \322nearest\323 to) 241.04 300 P
7 F
-0.4 (any) 459.21 300 P
4 8 Q
-0.32 (2) 476.05 296 P
4 10 Q
-0.4 ( in the inher-) 480.49 300 P
-0.26 (itance hierarchy where the slot identified by) 72 276.67 P
7 F
-0.26 (any) 277.46 276.67 P
4 8 Q
-0.21 (1) 294.3 272.67 P
4 10 Q
-0.26 ( will be located during inheritance search.  If it is de-) 298.75 276.67 P
0.13 (sired to find the object in which the method for the) 72 253.33 P
5 F
0.27 (map) 310.11 253.33 P
4 F
0.13 ( operation on) 328.11 253.33 P
5 F
0.27 (TupleExprs) 391.79 253.33 P
4 F
0.13 ( is located then the) 451.75 253.33 P
(following request suffices:) 72 233.33 T
5 F
(\050where map \325[a b]\051) 108 208.33 T
6 F
(\336) 221.94 208.33 T
5 F
( {Indexable SBO}) 231.8 208.33 T
4 F
0.75 (That is, there is a slot identified by \050the operation bound to the symbol\051) 72 188.33 P
5 F
1.61 (map) 414.15 188.33 P
4 F
0.75 ( in) 432.14 188.33 P
5 F
1.61 ({Indexable SBO}) 448.44 188.33 P
4 F
-0.02 (when the inheritance search is started at) 72 168.33 P
5 F
-0.04 (\325[a b]) 264.74 168.33 P
4 F
-0.02 (.  This slot will contain a method for mapping a pro-) 300.68 168.33 P
-0.31 (cedure over the elements of a) 72 148.33 P
5 F
-0.66 (TupleExpr) 207.86 148.33 P
4 F
-0.31 (.  If the slot identified by) 261.83 148.33 P
7 F
-0.31 (any) 376.12 148.33 P
4 8 Q
-0.25 (1) 392.96 144.33 P
4 10 Q
-0.31 ( is not defined on) 397.4 148.33 P
7 F
-0.31 (any) 477.68 148.33 P
4 8 Q
-0.25 (2) 494.52 144.33 P
4 10 Q
-0.31 ( then the) 498.97 148.33 P
(result of) 72 125 T
5 F
(where) 113.09 125 T
4 F
( will be the constant) 143.07 125 T
5 F
(#absent) 239.34 125 T
4 F
(.) 281.32 125 T
5 F
(\050lookup) 72 100 T
2 F
(any) 119.97 100 T
1 8 Q
(1) 134.41 96 T
2 10 Q
(any) 144.4 100 T
1 8 Q
(2) 158.83 96 T
5 10 Q
(\051) 162.83 100 T
6 F
(\336) 171.32 100 T
2 F
(any) 187.19 100 T
1 F
(primitive) 503.35 100 T
FMENDPAGE
%%EndPage: "14" 13
%%Page: "13" 13
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(13) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
-0.33 (the result may not always be unique.  For example,) 72 713.33 P
5 F
-0.71 (\050new []\051) 308.43 713.33 P
4 F
-0.33 ( yields the unique empty tuple.  The def-) 355.69 713.33 P
(inition of) 72 693.33 T
5 F
(new) 116.43 693.33 T
4 F
( used by most objects is essentially:) 134.42 693.33 T
5 F
(\050init \050clone \050self\051\051 &) 108 668.33 T
2 F
(initialization_arguments) 245.92 668.33 T
5 F
(\051) 344.22 668.33 T
4 F
0.1 (The) 72 648.33 P
5 F
0.22 (new) 92.65 648.33 P
4 F
0.1 ( operation is usually used to create a single instance of an entity and give it some arguments) 110.64 648.33 P
-0.23 (that the new instance may use to initialize itself.  By convention the operation) 72 628.33 P
5 F
-0.5 (newN) 432.9 628.33 P
4 F
-0.23 ( is provided on ob-) 456.88 628.33 P
0.26 (jects that implement a collection abstraction of some sort and for which it may be useful to create an) 72 608.33 P
0.01 (instance with) 72 588.33 P
5 F
0.03 (N) 137.38 588.33 P
4 F
0.01 ( elements initialized to some common value.  Further, the operation) 143.37 588.33 P
5 F
0.03 (new*) 459.52 588.33 P
4 F
0.01 ( is used con-) 483.5 588.33 P
0.33 (ventionally to create an instance of a collection in which there are different initial values for the ele-) 72 568.33 P
(ments.  For example:) 72 548.33 T
5 F
(\050newN Tuple 4 \325a\051) 108 523.33 T
6 F
(\336) 215.94 523.33 T
5 F
( [\325a \325a \325a \325a]) 225.8 523.33 T
4 F
(and) 72 503.33 T
5 F
(\050new* TupleExpr \325a \325b \325c\051) 108 478.33 T
6 F
(\336) 263.91 478.33 T
5 F
( \325[a b c]) 273.78 478.33 T
4 F
-0.57 (Aspects of these operations that are specific to different kinds of entities are discussed in later sections.) 72 458.33 P
5 F
(\050clone) 72 433.33 T
2 F
(any) 113.98 433.33 T
5 F
(\051) 128.41 433.33 T
6 F
(\336) 136.9 433.33 T
2 F
(a copy of any) 152.77 433.33 T
1 F
(primitive) 503.35 433.33 T
4 F
0.27 (The clone primitive usually produces a copy of its argument and is a basic creation primitive.  In the) 72 413.33 P
0.16 (cases:) 72 393.33 P
5 F
0.35 (#niv) 101.96 393.33 P
4 F
0.16 (,) 125.95 393.33 P
5 F
0.35 (#absent) 131.67 393.33 P
4 F
0.16 (,) 173.65 393.33 P
5 F
0.35 (#eof) 179.37 393.33 P
4 F
0.16 (,) 203.35 393.33 P
5 F
0.35 (Fixnum) 209.07 393.33 P
4 F
0.16 (,) 245.05 393.33 P
5 F
0.35 (Char) 250.77 393.33 P
4 F
0.16 (,) 274.76 393.33 P
5 F
0.35 (Symbol) 280.47 393.33 P
4 F
0.16 (,) 316.45 393.33 P
5 F
0.35 (EmptyMbox) 322.17 393.33 P
4 F
0.16 (,) 376.14 393.33 P
5 F
0.35 (LockedMbox) 381.86 393.33 P
4 F
0.16 (,) 441.83 393.33 P
5 F
0.35 ([]) 447.55 393.33 P
4 F
0.16 (, and) 459.54 393.33 P
5 F
0.35 (\325[]) 485.6 393.33 P
4 F
0.16 (, the re-) 503.59 393.33 P
0.09 (sult produced by) 72 373.33 P
5 F
0.2 (clone) 151.49 373.33 P
4 F
0.09 ( is the) 181.47 373.33 P
5 F
0.2 (same?) 212.85 373.33 P
4 F
0.09 ( as its argument.  In other cases, a distinct object is produced by) 242.84 373.33 P
0.16 (\322shallow\323 copying its argument.) 72 353.33 P
5 F
0.34 (Actors) 224.77 353.33 P
4 F
0.16 ( are always cloned with a) 260.75 353.33 P
5 F
0.34 (LockedMbox) 381.29 353.33 P
4 F
0.16 ( to ensure that entity) 441.26 353.33 P
0.08 (has an opportunity to initialize itself before receiving any external messages.  Initialization is accom-) 72 333.33 P
-0.06 (plished via the) 72 313.33 P
5 F
-0.12 (init) 142.73 313.33 P
4 F
-0.06 ( protocol.  It should be noted that cloning immediately gives the new instance de-) 166.71 313.33 P
(fault values for its slots as determined by the values of the slots of the argument to clone.) 72 293.33 T
5 F
(\050init) 72 268.33 T
2 F
(any initialization_argument) 107.98 268.33 T
6 F
(\274) 221.82 268.33 T
5 F
(\051) 231.81 268.33 T
6 F
(\336) 240.31 268.33 T
2 F
(any) 256.17 268.33 T
1 F
(sync-operation) 480.6 268.33 T
4 F
-0.34 (The) 72 248.33 P
5 F
-0.73 (init) 92.21 248.33 P
4 F
-0.34 ( synchronous operation serves to signal a \050new\051 instance to initialize itself.  Typically, the ar-) 116.2 248.33 P
-0.4 (guments provided are used to override some or all of the default values of the slots of the new instance.) 72 228.33 P
0.4 (The) 72 208.33 P
5 F
0.86 (init) 92.95 208.33 P
4 F
0.4 ( method must unlock the new instance so that it can receive messages and update its slots) 116.93 208.33 P
(with the results of initialization \050see section) 72 188.33 T
8 F
(3.5) 277.47 188.33 T
4 F
(\051.) 291.72 188.33 T
0.01 (The next group of operations can be used to traverse the inheritance hierarchy of the system, and) 90 163.33 P
(are used in the implementation of the system itself.) 72 143.33 T
5 F
(\050sbo) 72 118.33 T
2 F
(any) 101.98 118.33 T
5 F
(\051) 116.42 118.33 T
6 F
(\336) 124.91 118.33 T
2 F
(SharedBehaviorObject) 140.77 118.33 T
1 F
(sync-operation) 480.6 118.33 T
4 F
0.25 (The operation) 72 98.33 P
5 F
0.54 (sbo) 139.7 98.33 P
4 F
0.25 ( can always be applied to any entity and will return the shared behavior object for) 157.68 98.33 P
(its argument that is \322nearest\323 in the inheritance hierarchy.  For example:) 72 78.33 T
558 350 562 360 R
V
FMENDPAGE
%%EndPage: "13" 12
%%Page: "12" 12
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(12) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(deq) 108 713.33 T
(describe!) 252 713.33 T
(display!) 396 713.33 T
(empty?) 108 703.33 T
(enq) 252 703.33 T
(examine!) 396 703.33 T
(exp) 108 693.33 T
(expand) 252 693.33 T
(expander) 396 693.33 T
(expt) 108 683.33 T
(failed?) 252 683.33 T
(floor) 396 683.33 T
(flush!) 108 673.33 T
(form) 252 673.33 T
(head) 396 673.33 T
(iota) 108 663.33 T
(lg) 252 663.33 T
(lgf) 396 663.33 T
(log10) 108 653.33 T
(log) 252 653.33 T
(logand) 396 653.33 T
(lognot) 108 643.33 T
(logor) 252 643.33 T
(logxor) 396 643.33 T
(map) 108 633.33 T
(max) 252 633.33 T
(mdiv) 396 633.33 T
(min) 108 623.33 T
(nth) 252 623.33 T
(pop) 396 623.33 T
(print!) 108 613.33 T
(push) 252 613.33 T
(rcons) 396 613.33 T
(read!) 108 603.33 T
(role) 252 603.33 T
(sbo?) 396 603.33 T
(set-nth) 108 593.33 T
(size) 252 593.33 T
(split) 396 593.33 T
(state) 108 583.33 T
(sub-obj) 252 583.33 T
(tail) 396 583.33 T
(top) 108 573.33 T
(walk) 252 573.33 T
(xchg) 396 573.33 T
4 F
(The following identifiers are bound to synchronous operations in the initial Rosette environment:) 72 553.33 T
5 F
(add*) 108 528.33 T
(body@) 252 528.33 T
(code@) 396 528.33 T
(describe) 108 518.33 T
(display) 252 518.33 T
(examine) 396 518.33 T
(formals@) 108 508.33 T
(formals-mismatch) 252 508.33 T
(gen) 396 508.33 T
(init) 108 498.33 T
(kind) 252 498.33 T
(locked?) 396 498.33 T
(messages) 108 488.33 T
(missing-method) 252 488.33 T
(new*) 396 488.33 T
(new) 108 478.33 T
(newN) 252 478.33 T
(parent-wrt) 396 478.33 T
(print) 108 468.33 T
(print\134n) 252 468.33 T
(runtime-error) 396 468.33 T
(sbo) 108 458.33 T
(show-code) 252 458.33 T
(source@) 396 458.33 T
(vm-error) 108 448.33 T
(where) 252 448.33 T
4 F
-0.65 (Some of the above are generic in that they apply to virtually any entity.  Many of these will be discussed) 72 428.33 P
0.35 (here, and the others will be left to later sections devoted to the objects to which they apply.  Some of) 72 408.33 P
(the primitive operations are also discussed here.) 72 388.33 T
5 F
(\050same?) 72 363.33 T
2 F
(any) 113.98 363.33 T
1 8 Q
(1) 128.41 359.33 T
2 10 Q
(any) 138.4 363.33 T
1 8 Q
(2) 152.84 359.33 T
5 10 Q
(\051) 156.83 363.33 T
6 F
(\336) 165.33 363.33 T
2 F
(boolean) 181.19 363.33 T
1 F
(primitive) 503.35 363.33 T
4 F
-0.37 (A fundamental operation is) 72 340 P
5 F
-0.79 (same?) 199.92 340 P
4 F
-0.37 ( which tests whether two entities have the same mail-address.  This) 229.9 340 P
0.59 (operation is applicable to any two actors, and returns) 72 320 P
5 F
1.28 (#t) 326.31 320 P
4 F
0.59 ( or) 338.31 320 P
5 F
1.28 (#f) 354.48 320 P
4 F
0.59 ( accordingly.  It should be noted that) 366.48 320 P
-0.6 (while) 72 300 P
5 F
-1.28 (same?) 99.36 300 P
4 F
-0.6 ( works to test equality on) 129.34 300 P
5 F
-1.28 (Fixnums) 245.37 300 P
4 F
-0.6 ( it does not serve as equality on) 287.35 300 P
5 F
-1.28 (Floats) 430.69 300 P
4 F
-0.6 (.  In these cases,) 466.67 300 P
(the) 72 280 T
5 F
(=) 89.77 280 T
4 F
( operation or the associated primitives \050) 95.77 280 T
5 F
(fx=) 279.02 280 T
4 F
( and) 297.01 280 T
5 F
(fl=) 319.96 280 T
4 F
( should be used\051.) 337.95 280 T
(The following operations define the basic creation protocols for entities in the Rosette system.) 90 255 T
5 F
(\050new) 72 230 T
2 F
(prototype) 101.98 230 T
(initialization_argument) 146.29 230 T
6 F
(\274) 243.2 230 T
5 F
(\051) 253.19 230 T
6 F
(\336) 261.69 230 T
2 F
(a new entity) 277.55 230 T
1 F
(sync-operation) 480.6 230 T
4 F
-0.25 (In the Actor model, one of the fundamental capabilities that actors have is that of creating new actors.) 72 210 P
0.09 (In Rosette, this is usually accomplished via the) 72 190 P
5 F
0.19 (new) 292.97 190 P
4 F
0.09 ( operation.  This operation is generally applicable) 310.96 190 P
-0.05 (to any object.  For example, the prototype) 72 170 P
5 F
-0.12 (Oprn) 265.92 170 P
4 F
-0.05 ( may be used to create new operations via the request:) 289.91 170 P
5 F
(\050new Oprn) 108 145 T
2 F
(<identification>) 167.97 145 T
5 F
(\051) 234.77 145 T
4 F
1.3 (Depending on the prototype, additional arguments may be supplied that serve to initialize the in-) 72 125 P
-0.23 (stance.  There is nothing special about prototypes,) 72 105 P
5 F
-0.5 (new) 304.69 105 P
4 F
-0.23 ( copies of any entity can be requested; however,) 322.68 105 P
FMENDPAGE
%%EndPage: "12" 11
%%Page: "11" 11
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(11) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 F
0 X
(4.3.2.) 72 713.33 T
(Operations and Primitives) 108 713.33 T
4 F
0.51 (An operation is an) 90 688.33 P
5 F
1.11 (Actor) 179.79 688.33 P
4 F
0.51 ( that determines the protocol for finding a method to perform some re-) 209.77 688.33 P
0.25 (quest or command.  The concept of operations as defined in Rosette is similar to that of generic func-) 72 668.33 P
0.29 (tions in CLOS [Gabriel et al. 1988].  A message is sent to an operation and the operation determines) 72 648.33 P
-0.59 (the next step in getting the work accomplished.  Rosette provides a number of built-in operations called) 72 628.33 P
7 F
-0.61 (primitives) 72 608.33 P
4 F
-0.61 ( that implement basic behaviors on the entities in the initial environment.  For example, con-) 118.62 608.33 P
-0.25 (sider) 72 588.33 P
5 F
-0.54 (\050+ 3 4\051) 97.47 588.33 P
4 F
-0.25 (, the) 138.36 588.33 P
5 F
-0.54 (+) 161.19 588.33 P
4 F
-0.25 ( is an operation that determines what action to take based on the arguments sent) 167.18 588.33 P
-0.6 (to it in the message.  In this case, there are two) 72 568.33 P
5 F
-1.3 (Fixnums) 286.53 568.33 P
4 F
-0.6 ( and the operation selects the) 328.5 568.33 P
5 F
-1.3 (Fixnum) 463.53 568.33 P
4 F
-0.6 ( addition) 499.51 568.33 P
(primitive.) 72 548.33 T
0.25 (The way the selection is done depends on the kind of operation.  Typically, the operation will use) 90 523.33 P
-0.1 (the first argument as a target and send a message to the target that includes the operation as the key) 72 503.33 P
0.56 (for the method to be executed.  In general, this will not be the case.  The operation) 72 483.33 P
5 F
1.21 (+) 464.37 483.33 P
4 F
0.56 ( may be imple-) 470.37 483.33 P
-0.02 (mented so as to make a more direct determination of the method for addition.  Further, in some cases) 72 463.33 P
-0.03 (the operation may make its determination based on the classes of more than one of its arguments, se-) 72 443.33 P
-0.09 (lecting a procedure specific to a particular combination of arguments.  The syntax of putting the oper-) 72 423.33 P
0.15 (ation as the target in a communication is similar to traditional function-call syntax, and serves to in-) 72 403.33 P
-0.26 (tegrate function invocation and method invocation into a common form of expression.  Currently there) 72 383.33 P
0.64 (are two kinds of operation supported in Rosette.  The first is just called an) 72 363.33 P
5 F
1.38 (Oprn) 426.83 363.33 P
4 F
0.64 (, and) 450.81 363.33 P
5 F
1.38 (+) 477.83 363.33 P
4 F
0.64 ( above is an) 483.83 363.33 P
-0.02 (example.  The second kind of operation is called a) 72 343.33 P
5 F
-0.05 (SyncOprn) 303.18 343.33 P
4 F
-0.02 ( after its behavior as a \322synchronous\323 op-) 351.16 343.33 P
-0.48 (eration.  A) 72 323.33 P
5 F
-1.04 (SyncOprn) 122.01 323.33 P
4 F
-0.48 ( will cause a method to be looked up and invoked regardless of whether the target) 169.99 323.33 P
0.22 (entity is locked or not.  On the other hand messages sent as a result of an) 72 303.33 P
5 F
0.47 (Oprn) 417.6 303.33 P
4 F
0.22 ( obey the usual Actor) 441.58 303.33 P
-0.25 (semantics.  There are two uses for) 72 283.33 P
5 F
-0.54 (SyncOprn) 230.74 283.33 P
4 F
-0.25 (s.  The first is to implement the initialization protocol as-) 278.71 283.33 P
-0.03 (sociated with creating an instance.  This is typified by the) 72 263.33 P
5 F
-0.06 (init) 341.4 263.33 P
4 F
-0.03 ( operation.  The second use of) 365.39 263.33 P
5 F
-0.06 (SyncO-) 504.02 263.33 P
-1.14 (prn) 72 243.33 P
4 F
-0.53 (s is to implement diagnostic operations that permit examination of entities regardless of their com-) 89.99 243.33 P
-0.67 (munication state.  An example of this use is the synchronous operation) 72 223.33 P
5 F
-1.44 (messages) 393.82 223.33 P
4 F
-0.67 ( that retrieves a tuple) 441.79 223.33 P
(of the messages awaiting any entity.) 72 203.33 T
(The following is a list of identifiers that are bound to operations in the initial environment:) 90 178.33 T
5 F
(=) 108 153.33 T
(>) 252 153.33 T
(<) 396 153.33 T
(!=) 108 143.33 T
(>=) 252 143.33 T
(<=) 396 143.33 T
(+) 108 133.33 T
(-) 252 133.33 T
(*) 396 133.33 T
(%) 108 123.33 T
(/) 252 123.33 T
(->) 108 113.33 T
(->fixnum) 252 113.33 T
(->float) 396 113.33 T
(->tuple) 108 103.33 T
(->string) 252 103.33 T
(->symbol) 396 103.33 T
(abs) 108 93.33 T
(cdiv) 252 93.33 T
(ceil) 396 93.33 T
(clear) 108 83.33 T
(concat) 252 83.33 T
(cons*) 396 83.33 T
558 685 562 695 R
V
FMENDPAGE
%%EndPage: "11" 10
%%Page: "10" 10
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(10) 300.44 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
0.26 (methods.  Prototypes are entities that are copied to create new actors and objects that inherit from a) 72 713.33 P
-0.54 (shared behavior object.  A prototype is a representative of a class of entities.  The search for the method) 72 693.33 P
0.92 (to be used when a message is received starts at the receiving entity and continues with its parent,) 72 673.33 P
-0.31 (which is typically an SBO.) 72 653.33 P
5 F
-0.66 (SendExpr) 197.72 653.33 P
4 F
-0.31 ( is an example of a prototype, and its associated shared behavior) 245.69 653.33 P
-0.06 (object collects together all of the methods that apply to send expressions such as accessors of the com-) 72 633.33 P
0.14 (ponents of a send expression and the method for expanding a send expression.  The following is a list) 72 613.33 P
0.24 (of the names of the prototypes in the initial environment.  As a convention, the names for prototypes) 72 593.33 P
(start with an upper-case letter.) 72 573.33 T
5 F
(#absent) 108 548.33 T
(Actor) 252 548.33 T
(BlockExpr) 396 548.33 T
(Bool) 108 538.33 T
(Char) 252 538.33 T
(Code) 396 538.33 T
(CodeVec) 108 528.33 T
(ComplexPattern) 252 528.33 T
(ConstPattern) 396 528.33 T
(Ctxt) 108 518.33 T
(EmptyExpr) 252 518.33 T
(EmptyMbox) 396 518.33 T
(#eof) 108 508.33 T
(Fixnum) 252 508.33 T
(Float) 396 508.33 T
(FreeExpr) 108 498.33 T
(GotoExpr) 252 498.33 T
(IdPattern) 396 498.33 T
(IdAmperRestPattern) 108 488.33 T
(IdVecPattern) 252 488.33 T
(IfExpr) 396 488.33 T
(IndexedMeta) 108 478.33 T
(Istream) 252 478.33 T
(LabelExpr) 396 478.33 T
(LetExpr) 108 468.33 T
(LetrecExpr) 252 468.33 T
(LockedMbox) 396 468.33 T
(Meta) 108 458.33 T
(Method) 252 458.33 T
(MethodExpr) 396 458.33 T
(MIObject) 108 448.33 T
(Monitor) 252 448.33 T
(#niv) 396 448.33 T
(Oprn) 252 438.33 T
(Ostream) 396 438.33 T
(Prim) 108 428.33 T
(Proc) 252 428.33 T
(ProcExpr) 396 428.33 T
(Queue) 108 418.33 T
(QueueMbox) 252 418.33 T
(QuoteExpr) 396 418.33 T
(RequestExpr) 108 408.33 T
(SendExpr) 252 408.33 T
(SeqExpr) 396 408.33 T
(SetExpr) 108 398.33 T
(Stack) 252 398.33 T
(String) 396 398.33 T
(Symbol) 108 388.33 T
(SyncOprn) 252 388.33 T
(Table) 396 388.33 T
(Template) 108 378.33 T
(Timer) 252 378.33 T
(Tuple) 396 378.33 T
(TupleExpr) 108 368.33 T
4 F
0.85 (Some of these prototypical objects were introduced in section) 72 348.33 P
8 F
0.88 (4.1) 362.82 348.33 P
4 F
0.85 ( on constants.  Several will be dis-) 377.08 348.33 P
-0.01 (cussed briefly at this point, and the remainder in later sections of the report.  The prototypical) 72 328.33 P
5 F
-0.01 (Actor) 510.02 328.33 P
4 F
-0.38 (is used to create new families of entities.  The prototypical) 72 308.33 P
5 F
-0.82 (MIObject) 339.56 308.33 P
4 F
-0.38 ( is used to create shared behavior) 387.53 308.33 P
-0.42 (objects that provide for multiple inheritance.  The prototypes) 72 288.33 P
5 F
-0.9 (Meta) 352.55 288.33 P
4 F
-0.42 ( and) 376.54 288.33 P
5 F
-0.9 (IndexedMeta) 398.66 288.33 P
4 F
-0.42 ( are used implic-) 464.62 288.33 P
-0.01 (itly by the Rosette system in the process of creation, and represent objects that describe the structure) 72 268.34 P
-0.04 (of other entities.  Every entity has an associated meta object that may be accessed via the) 72 248.34 P
5 F
-0.08 (meta) 487.73 248.34 P
4 F
-0.04 ( prim-) 511.72 248.34 P
-0.4 (itive.  The prototypical) 72 228.34 P
5 F
-0.85 (Prim) 177.97 228.34 P
4 F
-0.4 ( is included for completeness but it is not possible to create new primitives) 201.96 228.34 P
-0.18 (by simply cloning it.  Primitives can only be created by extending the underlying Rosette implementa-) 72 208.34 P
-0.51 (tion.  The prototypes) 72 188.34 P
5 F
-1.1 (Method) 168.44 188.34 P
4 F
-0.51 (,) 204.42 188.34 P
5 F
-1.1 (Proc) 209.46 188.34 P
4 F
-0.51 (,) 233.45 188.34 P
5 F
-1.1 (Code) 238.5 188.34 P
4 F
-0.51 (, and) 262.48 188.34 P
5 F
-1.1 (CodeVec) 287.2 188.34 P
4 F
-0.51 ( are included also for completeness.  They may) 329.18 188.34 P
-0.32 (be cloned to produce new instances although they are usually created as a result of the) 72 168.34 P
5 F
-0.69 (compile) 470.03 168.34 P
4 F
-0.32 ( prim-) 512.01 168.34 P
-0.6 (itive on) 72 148.34 P
5 F
-1.29 (Exprs) 108.01 148.34 P
4 F
-0.6 (.  New methods can be added at any time to extend the behavior of any of the above kinds) 138 148.34 P
(of entities.  The slots representing their local state are freely accessible to Rosette code.) 72 128.34 T
558 435 562 445 R
V
558 305 562 335 R
V
FMENDPAGE
%%EndPage: "10" 9
%%Page: "9" 9
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(9) 303.22 749.33 T
72 32.67 540 42.67 R
7 X
V
72 54 540 720 R
V
3 12 Q
0 X
(4.2.) 72 712 T
(Variables and definitions) 108 712 T
6 10 Q
(\341) 72 693.33 T
2 F
(id) 75.29 693.33 T
6 F
(\361) 83.06 693.33 T
1 F
(basic syntax) 490.87 693.33 T
4 F
-0.38 (Any identifier that is not a keyword may be used \050unambiguously\051 as a variable.  A variable may name) 72 673.33 P
0.57 (an actor or object which is said to be bound to the variable.  The set of all such bindings in effect at) 72 653.33 P
-0.39 (some point in a program is known as the environment in effect at that point.  The actor or object bound) 72 633.33 P
(to a variable is called the variable\325s value.) 72 613.33 T
0.13 (Like Algol, Pascal, and Scheme, Rosette is a statically scoped language with block structure.  For) 90 588.33 P
-0.09 (each bound variable, there is a region of the program text within which the binding is visible.  The re-) 72 568.33 P
-0.57 (gion is determined by the particular binding construct.  Every reference to a variable refers to the bind-) 72 548.33 P
-0.14 (ing of that variable established by the innermost region containing a binding of the variable.  There is) 72 528.33 P
-0.51 (an outermost region, the \322top-level environment\323, and if a variable is not bound in any region including) 72 508.33 P
(the top-level environment, then it is said to be unbound.) 72 488.33 T
(The construct) 90 463.33 T
5 F
(define) 156.25 463.33 T
4 F
( introduces new variable bindings in the top-level environment.) 192.23 463.33 T
3 F
(\050) 72 438.33 T
5 F
(define) 75.33 438.33 T
6 F
(\341) 113.81 438.33 T
2 F
(id) 117.1 438.33 T
6 F
(\361) 124.87 438.33 T
(\341) 130.66 438.33 T
2 F
(expr) 133.95 438.33 T
6 F
(\361) 151.71 438.33 T
5 F
(\051) 154.99 438.33 T
6 F
(\336) 166.99 438.33 T
(\341) 182.85 438.33 T
2 F
(id) 186.14 438.33 T
6 F
(\361) 193.91 438.33 T
1 F
(derived syntax) 481.43 438.33 T
4 F
-0.5 (The) 72 418.33 P
6 F
-0.45 (\341) 92.04 418.33 P
7 F
-0.5 (expr) 95.33 418.33 P
6 F
-0.45 (\361) 114.94 418.33 P
4 F
-0.5 ( is evaluated and the result bound to the) 118.23 418.33 P
6 F
-0.45 (\341) 303.81 418.33 P
7 F
-0.5 (id) 307.1 418.33 P
6 F
-0.45 (\361) 316.53 418.33 P
4 F
-0.5 (.  The defining form returns the symbol that was) 319.82 418.33 P
(defined.) 72 398.33 T
0.1 (An expression consisting of a variable is a variable reference.  The value of the variable reference) 90 373.33 P
0.41 (is the value bound to the variable in the environment in effect at the point of the variable reference.) 72 353.33 P
(An exception will be raised if a variable reference is made to an unbound variable.) 72 333.33 T
5 F
(\050define x 28\051) 108 313.33 T
6 F
(\336) 360 313.33 T
5 F
( \325x) 369.86 313.33 T
(x) 108 303.33 T
6 F
(\336) 360 303.33 T
5 F
( 28) 369.86 303.33 T
4 F
0.64 (Other binding constructs are as follows:) 90 283.33 P
5 F
1.38 (proc) 280.42 283.33 P
4 F
0.64 (,) 304.41 283.33 P
5 F
1.38 (method) 310.61 283.33 P
4 F
0.64 ( and) 346.59 283.33 P
5 F
1.38 (pure) 370.83 283.33 P
4 F
0.64 (, which bind formals to actuals) 394.81 283.33 P
0.04 (\050section) 72 263.33 P
8 F
0.04 (6.2) 110.35 263.33 P
4 F
0.04 (\051;) 124.6 263.33 P
5 F
0.09 (let) 133.53 263.33 P
4 F
0.04 (,) 151.52 263.33 P
5 F
0.09 (let*) 157.12 263.33 P
4 F
0.04 (, and) 181.1 263.33 P
5 F
0.09 (letrec) 206.92 263.33 P
4 F
0.04 (, which introduce local bindings typically for the purpose of tem-) 242.9 263.33 P
0.47 (poraries in definitions \050section) 72 243.33 P
8 F
0.49 (5.3) 216.96 243.33 P
4 F
0.47 (\051;) 231.21 243.33 P
5 F
1.02 (do) 240.56 243.33 P
4 F
0.47 (,) 252.56 243.33 P
5 F
1.02 (do*) 258.58 243.33 P
4 F
0.47 (, and) 276.58 243.33 P
5 F
1.02 (iterate) 303.25 243.33 P
4 F
0.47 ( which introduce local bindings in looping) 345.23 243.33 P
0.77 (constructs; and the  form) 72 223.33 P
5 F
1.66 (defActor) 194.12 223.33 P
4 F
0.77 ( , which generates shared behavior objects and their associated) 242.09 223.33 P
0.28 (prototypical actors that handle multiple types of requests.  Actors are entities that have a local state) 72 203.33 P
(that may be modified in response to messages that they receive \050see below and section) 72 183.33 T
8 F
(6.3) 472.02 183.33 T
4 F
(\051.) 486.27 183.33 T
3 12 Q
(4.3.) 72 152 T
(Prototypes, operations and primitives) 108 152 T
3 10 Q
(4.3.1.) 72 129.33 T
(Prototypes and shared behavior objects) 108 129.33 T
4 F
-0.69 (A shared behavior object \050SBO\051 is much like a method dictionary in Smalltalk-80 [Goldberg and Robson) 72 104.33 P
-0.25 (1983].  An SBO collects together the methods and other values that are defined over copies \050instances\051) 72 84.33 P
0.53 (of the associated prototypical actor or object.  All of the instances share common definitions of these) 72 64.33 P
558 200 562 230 R
V
FMENDPAGE
%%EndPage: "9" 8
%%Page: "8" 8
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(8) 303.22 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
0.1 (concatenation of the preceding actors and the tuple actor resulting from the last expression.  The two) 72 713.33 P
(following examples illustrate the difference in the two forms of writing tuples:) 72 693.33 T
5 F
([3 2 [1 2 3]]) 108 668.33 T
6 F
(\336) 360 668.33 T
5 F
( [3 2 [1 2 3]]) 369.86 668.33 T
([3 2 & [1 2 3]]) 108 658.33 T
6 F
(\336) 360 658.33 T
5 F
( [3 2 1 2 3]) 369.86 658.33 T
4 F
0.2 (The \322) 72 638.33 P
5 F
0.43 (&) 96.64 638.33 P
6 F
0.18 (\341) 109.06 638.33 P
7 F
0.2 (expr) 112.35 638.33 P
6 F
0.18 (\361) 131.96 638.33 P
4 F
0.2 (\323 form flattens the tuple resulting from) 135.25 638.33 P
6 F
0.18 (\341) 319.52 638.33 P
7 F
0.2 (expr) 322.81 638.33 P
6 F
0.18 (\361) 342.42 638.33 P
4 F
0.2 ( into the tuple being constructed.  The op-) 345.71 638.33 P
(erations available on tuples are described in section) 72 618.33 T
8 F
(7.6) 313.76 618.33 T
4 F
(.) 328.01 618.33 T
(Strings are written as follows:) 72 593.33 T
5 F
(") 72 568.33 T
6 F
(\341) 78 568.33 T
2 F
(character) 81.29 568.33 T
6 F
(\361) 120.14 568.33 T
(\274) 129.43 568.33 T
5 F
(") 139.42 568.33 T
1 F
(basic syntax) 490.87 568.33 T
4 F
0.16 (A string is a sequence of 0 or more characters.  They are used for example in input/output operations) 72 548.33 P
0.17 (and to construct identifiers in programs.  The escape sequences defined in section) 72 528.33 P
8 F
0.17 (3.2) 453.24 528.33 P
4 F
0.17 ( may be used to) 467.5 528.33 P
-0.06 (include certain non-graphic characters as well as the characters \322) 72 508.33 P
5 F
-0.13 (\134) 373.32 508.33 P
4 F
-0.06 (\323 and \322) 379.31 508.33 P
5 F
-0.13 (") 409.92 508.33 P
4 F
-0.06 (\323 in strings.  Operations on) 415.92 508.33 P
(strings are described in section) 72 488.33 T
8 F
(7.5) 218.22 488.33 T
4 F
(.) 232.47 488.33 T
5 F
("a \134" in a string") 108 468.33 T
4 F
(Expression literals are written using the \322) 72 448.33 T
5 F
(\325) 266.35 448.33 T
4 F
(\323 character:) 272.35 448.33 T
5 F
(\325) 72 423.33 T
6 F
(\341) 78 423.33 T
2 F
(expr) 81.29 423.33 T
6 F
(\361) 99.04 423.33 T
1 F
(basic syntax) 490.87 423.33 T
4 F
-0.55 (An expression literal is an actor that represents an expression as data.  There is a rich set of expression) 72 403.33 P
(actors corresponding to the different sorts of expressions in Rosette \050see sections) 72 383.33 T
8 F
(7.7) 445.48 383.33 T
4 F
( and) 459.74 383.33 T
8 F
(8.1) 482.69 383.33 T
4 F
(\051:) 496.95 383.33 T
5 F
(BlockExpr  FreeExpr   GotoExpr IfExpr   LabelExpr LetExpr) 108 358.33 T
(LetrecExpr MethodExpr NilExpr  ProcExpr QuoteExpr RequestExpr) 108 348.33 T
(SendExpr   SeqExpr    SetExpr  Symbol   TupleExpr) 108 338.33 T
4 F
-0.06 (\050The identifier) 72 318.33 P
5 F
-0.13 (Symbol) 141.47 318.33 P
4 F
-0.06 ( is used to name the prototypical identifier expression.\051  The basic input opera-) 177.45 318.33 P
(tions \050section) 72 298.33 T
8 F
(11) 135.85 298.33 T
4 F
(\051 parse and return expression actors, as does macro expansion \050section) 147.33 298.33 T
8 F
(10) 474.75 298.33 T
4 F
(\051.) 486.22 298.33 T
5 F
(\325a-symbol) 108 273.33 T
6 F
(\336) 360 273.33 T
5 F
( a-symbol) 369.86 273.33 T
(\325[a 2 3]) 108 263.33 T
6 F
(\336) 360 263.33 T
5 F
( [a 2 3]) 369.86 263.33 T
(\325\050+ a 3\051) 108 253.33 T
6 F
(\336) 360 253.33 T
5 F
( \050+ a 3\051) 369.86 253.33 T
4 F
0.19 (The second example above is a) 72 233.33 P
5 F
0.4 (TupleExpr) 216.96 233.33 P
4 F
0.19 ( while the last example is of a) 270.93 233.33 P
5 F
0.4 (RequestExpr) 412.38 233.33 P
4 F
0.19 (.  Note that a) 478.34 233.33 P
5 F
1.42 (TupleExpr) 72 213.33 P
4 F
0.66 ( is not the same as a tuple.  The evaluation of a) 125.97 213.33 P
5 F
1.42 (TupleExpr) 355.39 213.33 P
4 F
0.66 ( produces a tuple, while the) 409.36 213.33 P
-0.38 (evaluation of a) 72 193.33 P
5 F
-0.82 (RequestExpr) 144.35 193.33 P
4 F
-0.38 ( can produce any sort of value.  Operations on expression objects are dis-) 210.31 193.33 P
-0.43 (cussed in section) 72 173.33 P
8 F
-0.44 (8.1) 151.04 173.33 P
4 F
-0.43 (.  Discussion of the use of expressions in the definition of actors and objects follows) 165.3 173.33 P
(in the remainder of this section.) 72 153.33 T
FMENDPAGE
%%EndPage: "8" 7
%%Page: "7" 7
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(7) 303.22 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(and) 108 713.33 T
(become) 252 713.33 T
(break) 396 713.33 T
(cond) 108 703.33 T
(dec) 252 703.33 T
(define) 396 703.33 T
(defActor) 108 693.33 T
(defExpander) 252 693.33 T
(defOprn) 108 683.33 T
(defMethod) 252 683.33 T
(defProc) 396 683.33 T
(defPure) 108 673.33 T
(defSlot) 252 673.33 T
(defSlots) 396 673.33 T
(defSync) 108 663.33 T
(defValue) 252 663.33 T
(do) 396 663.33 T
(do*) 108 653.33 T
(inc) 252 653.33 T
(iterate) 396 653.33 T
(local) 108 643.33 T
(m!) 252 643.33 T
(next) 396 643.33 T
(not) 108 633.33 T
(method) 252 633.33 T
(or) 396 633.33 T
(proc) 108 623.33 T
(pure) 252 623.33 T
(set) 396 623.33 T
(slot) 108 613.33 T
(super) 252 613.33 T
(update) 396 613.33 T
(value) 108 603.33 T
(void) 252 603.33 T
(s!) 396 603.33 T
3 12 Q
(4.1.) 72 582 T
(Constants) 108 582 T
4 10 Q
0.62 (Constants are actors that always have the same behavior.  Several classes of constants are built-in.) 72 563.33 P
-0.35 (They include familiar atomic data types, the basic constants and the structured constants.  Structured) 72 543.33 P
(constants have components that may be accessed.  These include tuples, strings, and expressions.) 72 523.33 T
3 F
(4.1.1.) 72 493.33 T
(Basic constants) 108 493.33 T
6 F
(\341) 72 468.33 T
2 F
(basic constant) 75.29 468.33 T
6 F
(\361) 132.76 468.33 T
1 F
(basic syntax) 490.87 468.33 T
4 F
-0.22 (The kinds of basic constants are) 72 448.33 P
5 F
-0.47 (Boolean) 221.56 448.33 P
4 F
-0.22 (,) 263.54 448.33 P
5 F
-0.47 (Character) 268.88 448.33 P
4 F
-0.22 (,) 322.85 448.33 P
5 F
-0.47 (Fixnum) 328.18 448.33 P
4 F
-0.22 (,) 364.17 448.33 P
5 F
-0.47 (Float) 369.5 448.33 P
4 F
-0.22 (, and the following special con-) 399.49 448.33 P
0.05 (stants:) 72 428.33 P
5 F
0.11 (#absent) 106.3 428.33 P
4 F
0.05 (, which is used to indicate that no value is present,) 148.28 428.33 P
5 F
0.11 (#eof) 385.95 428.33 P
4 F
0.05 ( which is used to signal that) 409.93 428.33 P
-0.57 (the end of a stream has been reached, and) 72 408.33 P
5 F
-1.23 (#niv) 264.4 408.33 P
4 F
-0.57 ( \050no-intrinsic-value\051, which is used when no other value) 288.39 408.33 P
-0.67 (is appropriate.  Operations on basic constant actors are described in sections) 72 388.33 P
8 F
-0.69 (7.1-4) 420.13 388.33 P
4 F
-0.67 (.  The basic constants) 443.44 388.33 P
(evaluate to themselves:) 72 368.33 T
5 F
(#t) 108 343.33 T
6 F
(\336) 360 343.33 T
5 F
( #t) 369.86 343.33 T
(#\134b) 108 333.33 T
6 F
(\336) 360 333.33 T
5 F
( #\134b) 369.86 333.33 T
(231) 108 323.33 T
6 F
(\336) 360 323.33 T
5 F
( 231) 369.86 323.33 T
(3.14) 108 313.33 T
6 F
(\336) 360 313.33 T
5 F
( 3.14) 369.86 313.33 T
(#absent) 108 303.33 T
6 F
(\336) 360 303.33 T
5 F
( #absent) 369.86 303.33 T
(#eof) 108 293.33 T
6 F
(\336) 360 293.33 T
5 F
( #eof) 369.86 293.33 T
(#niv) 108 283.33 T
6 F
(\336) 360 283.33 T
5 F
( #niv) 369.86 283.33 T
3 F
(4.1.2.) 72 263.34 T
(Structured Constants) 108 263.34 T
4 F
(Structured constants include tuples, strings, and expression literals.) 72 238.34 T
(Tuples are written as follows:) 72 213.34 T
5 F
([) 72 188.34 T
6 F
(\341) 78 188.34 T
2 F
(expr) 81.29 188.34 T
6 F
(\361) 99.04 188.34 T
(\274) 108.33 188.34 T
5 F
(]) 118.32 188.34 T
1 F
(basic syntax) 490.87 188.34 T
5 F
([) 72 178.34 T
6 F
(\341) 78 178.34 T
2 F
(expr) 81.29 178.34 T
6 F
(\361) 99.04 178.34 T
(\274) 108.33 178.34 T
5 F
( &) 118.32 178.34 T
6 F
(\341) 136.32 178.34 T
2 F
(expr) 139.6 178.34 T
6 F
(\361) 157.36 178.34 T
5 F
(]) 160.65 178.34 T
1 F
(basic syntax) 490.87 178.34 T
4 F
0.4 (Tuples are used to represent messages that convey information between two actors in a communica-) 72 158.34 P
-0.6 (tion, to introduce sub-structure in messages, and as a primitive data structure in the definition of other) 72 138.34 P
0.25 (actors.  The first form above permits 0 or more actors to be packaged up in a tuple.  The second form) 72 118.34 P
0.64 (requires that the expression following the) 72 98.34 P
5 F
1.38 (&) 271.31 98.34 P
4 F
0.64 ( must evaluate to a tuple, and the resulting tuple is the) 277.3 98.34 P
558 690 562 700 R
V
558 600 562 610 R
V
FMENDPAGE
%%EndPage: "7" 6
%%Page: "6" 6
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(6) 303.22 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 12 Q
0 X
(4.) 72 712 T
(Simple constructs) 90 712 T
4 10 Q
0.45 (Constructs may be characterized as either simple or compound.  Simple constructs are used to build) 72 686.33 P
0.15 (larger constructs called compound constructs.  This section defines the simple constructs available in) 72 666.33 P
(Rosette.  Section) 72 646.33 T
8 F
(5) 151.6 646.33 T
4 F
( describes the compound constructs.) 157.33 646.33 T
-0.65 (An expression is a construct that, when evaluated, returns one or more values.  Examples of classes) 90 621.33 P
0.67 (of expressions include constants, variable references, requests, and conditional expressions.  A com-) 72 601.33 P
0.24 (mand is a construct that sends one or more messages to initiate actions at other actors.  Expressions) 72 581.33 P
0.4 (and commands may be used interactively with a system supporting Rosette; however, they are more) 72 561.33 P
(frequently used to describe the behavior of actors in response to the receipt of messages.) 72 541.33 T
1.14 (Expression and command constructs may be categorized as either basic or derived.  Basic con-) 90 516.33 P
-0.26 (structs include variables, request expressions, literals, and special forms.  Special forms are converted) 72 496.33 P
0.26 (by the Rosette reader to instances of the appropriate expression type.  Derived constructs are not se-) 72 476.33 P
-0.18 (mantically primitive, but can be explained in terms of the basic constructs \050see Appendix 2\051.  They are) 72 456.33 P
0.11 (redundant, but capture common patterns of usage, and are provided therefore as convenient abbrevi-) 72 436.33 P
-0.14 (ations.  Moreover, they may be implemented in a direct fashion either in an interpreter or compiler as) 72 416.33 P
(warranted by performance considerations.) 72 396.33 T
0.59 (Special-form constructs and the derived constructs are written using request expressions with a) 90 371.33 P
0.38 (syntactic keyword as the target of the request.  A Rosette program is first macro) 72 351.33 P
0.38 (expanded and then) 450.94 351.33 P
-0.39 (compiled and run.  The expansion is performed in an environment in which the syntactic keywords are) 72 331.33 P
0.46 (\322bound to\323 procedures that perform macro transformations on Rosette programs.  The following spe-) 72 311.33 P
(cial-form keywords:) 72 291.33 T
5 F
(block) 108 266.33 T
(free) 252 266.33 T
(goto) 396 266.33 T
(if) 108 256.33 T
(label) 252 256.33 T
(let) 396 256.33 T
(let*) 108 246.33 T
(letrec) 252 246.33 T
(method) 396 246.33 T
(proc) 108 236.33 T
(send) 252 236.33 T
(seq) 396 236.33 T
(set!) 108 226.33 T
4 F
(and the following derived \050macro\051 keywords are defined in the initial Rosette environment:) 72 206.33 T
FMENDPAGE
%%EndPage: "6" 5
%%Page: "5" 5
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(5) 303.22 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
5 F
0 X
(#niv) 198 713.33 T
1 F
(the \322no intrinsic value\323 constant) 243 713.33 T
5 F
(#absent) 198 701.33 T
1 F
(the constant indicating an absent value) 243 701.33 T
5 F
(#eof) 198 689.33 T
1 F
(end of a stream) 243 689.33 T
5 F
(;) 108 671.33 T
1 F
-0.37 (Semicolon starts a comment except when it occurs within a string.  The comment contin-) 189 671.33 P
0.17 (ues to the next newline or page break in the input stream.  Comments are treated as a) 198 659.33 P
0.04 (part of the newline or page break and consequently may not appear in the middle of a) 198 647.33 P
(token.) 198 635.33 T
4 F
0.52 (The escape character \322) 72 617.33 P
5 F
1.12 (\134) 177.76 617.33 P
4 F
0.52 (\323 is used to write some common non-graphic characters that may be used as) 183.76 617.33 P
-0.08 (characters by themselves or included in symbols or strings.  In particular, the escape sequence \322) 72 597.33 P
5 F
-0.16 (\134) 513.8 597.33 P
4 F
-0.08 (\323 is) 525.63 597.33 P
0.03 (used to include a space in a symbol.  An example of its use is: \322) 72 577.33 P
5 F
0.05 (symbol\134 with\134 spaces) 361.35 577.33 P
4 F
0.03 (\323.  It is legal,) 481.39 577.33 P
0.17 (though not necessary, to use it when writing a character constant or string.  \322) 72 557.33 P
5 F
0.37 (\134\134) 432 557.33 P
4 F
0.17 (\323 is used to write the) 443.99 557.33 P
-0.52 (backslash character itself.  Thus the character constant backslash is written \322) 72 537.33 P
5 F
-1.13 (#\134\134\134) 425.54 537.33 P
4 F
-0.52 (\323.  The following are) 449.53 537.33 P
(additional escape sequences:) 72 517.33 T
5 F
(\134n) 108 497.33 T
1 F
(newline) 360 497.33 T
5 F
(\134r) 108 487.33 T
1 F
(return) 360 487.33 T
5 F
(\134t) 108 477.33 T
1 F
(tab) 360 477.33 T
5 F
(\134f) 108 467.33 T
1 F
(page break) 360 467.33 T
5 F
(\134") 108 457.33 T
1 F
(string quote) 360 457.33 T
5 F
(\134x) 108 447.33 T
2 F
(dd) 119.99 447.33 T
1 F
(hexadecimal character code) 360 447.33 T
4 F
(Examples of the above are:) 72 427.33 T
5 F
("a string\134 with a \134"") 108 404.67 T
6 14 Q
(\272) 239.93 404.67 T
5 10 Q
( "a string with a \134"") 247.61 404.67 T
("a\134tstring\134tthat tabs and returns\134r") 108 393.33 T
("the page break character is written \134"#\134\134\134\134f\134"") 108 383.33 T
558 686 562 696 R
V
FMENDPAGE
%%EndPage: "5" 4
%%Page: "4" 4
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(4) 303.22 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
3 12 Q
0 X
(3.) 72 712 T
(Lexical conventions) 90 712 T
4 10 Q
0.76 (This section introduces the syntax of the tokens \050out of which expressions are built\051 in Rosette pro-) 72 686.33 P
(grams.) 72 666.33 T
3 12 Q
(3.1.) 72 635 T
(Identifiers) 108 635 T
4 10 Q
-0.39 (Rosette identifiers follow conventions similar to those of other languages.  An identifier may be formed) 72 616.33 P
0.51 (from a sequence of letters, digits, and \322extended alphabetic characters\323 that begins with a character) 72 596.33 P
(that is not a digit.  The following are extended alphabetic characters:) 72 576.33 T
5 F
(+ - * / < = > ! ? $ % _ ~ ^) 108 551.33 T
4 F
(Examples of identifiers are:) 72 531.33 T
5 F
(proc) 108 506.33 T
(q) 252 506.33 T
(matrix->determinant) 108 496.33 T
(beef-Broth) 252 496.33 T
(+) 108 486.33 T
(<=) 252 486.33 T
4 F
-0.36 (Upper and lower case forms of a letter are always distinct.  Thus) 90 466.33 P
5 F
-0.78 (foo) 386.66 466.33 P
4 F
-0.36 (,) 404.65 466.33 P
5 F
-0.78 (Foo) 409.85 466.33 P
4 F
-0.36 (, and) 427.84 466.33 P
5 F
-0.78 (FOO) 452.85 466.33 P
4 F
-0.36 (are all distinct) 473.34 466.33 P
-0.12 (identifiers.  An identifier is terminated by white space or one of \322) 72 446.33 P
5 F
-0.26 (\050) 369.83 446.33 P
4 F
-0.12 (\323, \322) 375.83 446.33 P
5 F
-0.26 (\051) 389.04 446.33 P
4 F
-0.12 (\323, \322) 395.04 446.33 P
5 F
-0.26 ([) 408.25 446.33 P
4 F
-0.12 (\323, or \322) 414.24 446.33 P
5 F
-0.26 (]) 439.55 446.33 P
4 F
-0.12 (\323.  White) 445.54 446.33 P
-0.12 (space char-) 488.12 446.33 P
0.28 (acters are spaces, tabs, newlines, and page break.  White space is used to improve readability and to) 72 426.33 P
-0.33 (separate tokens from each other as necessary, but is otherwise insignificant.  \050A token is an indivisible) 72 406.33 P
0.4 (lexical unit such as an identifier or a number.\051  White space may occur between any two tokens, but) 72 386.33 P
(not within a token.  White space may also occur inside a string literal, where it is significant.) 72 366.33 T
-0.38 (Identifiers in Rosette may be used as syntactic keywords \050see section) 90 341.33 P
8 F
-0.39 (4) 406.22 341.33 P
4 F
-0.38 ( and) 411.95 341.33 P
8 F
-0.39 (10) 434.15 341.33 P
4 F
-0.38 (\051 or as variables that) 445.62 341.33 P
0.25 (are bound to a value \050see section) 72 321.33 P
8 F
0.26 (4.2) 226.48 321.33 P
4 F
0.25 (\051.  When an identifier appears as a literal or within a literal \050see) 240.73 321.33 P
(section) 72 301.33 T
8 F
(4.1) 106.98 301.33 T
4 F
(\051, it represents a symbol \050see section) 121.23 301.33 T
8 F
(7.7) 290.97 301.33 T
4 F
(\051.) 305.22 301.33 T
3 12 Q
(3.2.) 72 270 T
(Other notations) 108 270 T
4 10 Q
(The following summarizes the other notations used in Rosette:) 72 251.33 T
5 F
(0) 108 223.67 T
6 14 Q
(\274) 114 223.67 T
5 10 Q
(9) 127.99 223.67 T
1 F
(Digits are used to notate numbers in base 10) 189 223.67 T
5 F
(.) 366.1 223.67 T
(\050 \051) 108 204.33 T
1 F
(Parentheses are used to notate sending communications \050see section) 189 204.33 T
3 F
(4.4) 462.97 204.33 T
1 F
(\051.) 475.46 204.33 T
5 F
([ ]) 108 186.33 T
1 F
(Brackets are used to notate tuples \050see section) 189 186.33 T
3 F
(4.1) 374.97 186.33 T
1 F
(\051.) 387.46 186.33 T
5 F
(\325) 108 168.33 T
1 F
(Single quote is used to indicate literal expressions \050see section) 189 168.33 T
3 F
(4.1) 440.5 168.33 T
1 F
(\051.) 452.99 168.33 T
5 F
(") 108 150.33 T
1 F
(Character string constants are delimited by double quote characters \050section) 189 150.33 T
3 F
(4.1) 494.32 150.33 T
1 F
(\051.) 506.82 150.33 T
5 F
(\134) 108 132.33 T
1 F
(The backslash introduces character escapes in symbols, characters, and strings \050section) 189 132.33 T
3 F
(4.1) 198 120.33 T
1 F
(\051.) 210.49 120.33 T
5 F
(#) 108 102.33 T
1 F
(The sharp sign is a prefix for a variety of constants \050section) 189 102.33 T
3 F
(4.1) 428.82 102.33 T
1 F
(\051:) 441.31 102.33 T
5 F
(#t #f) 198 90.33 T
1 F
(boolean constants) 243 90.33 T
5 F
(#\134) 198 78.34 T
1 F
(character constants) 243 78.34 T
FMENDPAGE
%%EndPage: "4" 3
%%Page: "3" 3
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(3) 303.22 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
0.09 (that may be stored as the value in a slot just as any other actor.  Thus, the concepts of acquaintances) 72 713.33 P
-0.65 (and script are unified in Rosette.  Further, by breaking the script up into methods, inheritance becomes) 72 693.33 P
0.08 (a reasonable way to support sharing and code reuse within the context of the actor model.  Two other) 72 673.33 P
0.37 (hidden or meta slots associated with every actor in Rosette are) 72 653.33 P
5 F
0.79 (meta) 368.29 653.33 P
4 F
0.37 ( and) 392.28 653.33 P
5 F
0.79 (mbox) 415.97 653.33 P
4 F
0.37 (.  The) 439.95 653.33 P
5 F
0.79 (meta) 469.93 653.33 P
4 F
0.37 ( slot of an) 493.92 653.33 P
-0.32 (actor refers to another actor that describes the structure of the first actor, while the) 72 633.33 P
5 F
-0.69 (mbox) 456.26 633.33 P
4 F
-0.32 ( slot refers to) 480.25 633.33 P
(an actor that implements the mail-queue abstraction \050see section) 72 613.33 T
8 F
(9) 375.02 613.33 T
4 F
(\051.) 380.76 613.33 T
3 12 Q
(2.2.) 72 582 T
(Objects) 108 582 T
4 10 Q
(In this version \0501.1\051, the distinction between objects and actors has been removed.) 72 563.33 T
3 12 Q
(2.3.) 72 532 T
(Environments) 108 532 T
4 10 Q
-0.5 (There are two environments that are important to know about in the Rosette system:) 72 513.33 P
5 F
-1.08 (Global) 461.3 513.33 P
4 F
-0.5 ( and) 497.28 513.33 P
5 F
-1.08 (Top) 519.23 513.33 P
4 F
-0.5 (.) 537.22 513.33 P
-0.04 (Essentially,) 72 493.33 P
5 F
-0.09 (Top) 129.35 493.33 P
4 F
-0.04 ( is the top-most object in the inheritance graph in which shared slots are stored.  It is) 147.34 493.33 P
-0.05 (not necessary for the inheritance graph to be rooted; however, the majority of the entities that are de-) 72 473.33 P
0.65 (fined in the system are in fact rooted at) 72 453.33 P
5 F
1.41 (Top) 262.81 453.33 P
4 F
0.65 (.  The) 280.8 453.33 P
5 F
1.41 (Global) 311.65 453.33 P
4 F
0.65 ( object is an environment that maintains) 347.63 453.33 P
-0.01 (bindings for symbols that are intended to be accessed from the Rosette listener loop and serves as the) 72 433.33 P
-0.35 (final environment that the compiler will check when resolving a free-variable.  Typically, symbols that) 72 413.33 P
0.03 (are bound to operations will occur free in a method for an entity and are resolved against the) 72 393.33 P
5 F
0.07 (Global) 504.02 393.33 P
4 F
(environment.) 72 373.33 T
558 528 562 590 R
V
FMENDPAGE
%%EndPage: "3" 2
%%Page: "2" 2
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(2) 303.22 749.33 T
72 32.67 540 42.67 R
7 X
V
72 72 540 720 R
V
4 F
0 X
-0.39 (directly in messages.  Since primitive actors are immutable, their identity may be represented by their) 72 713.33 P
-0.29 (state.  That is,) 72 693.33 P
5 F
-0.64 (3) 140.44 693.33 P
4 F
-0.29 ( is a sufficient identity for itself since its behavior is the same always and everywhere.) 146.44 693.33 P
-0.52 (A non-primitive actor has an identity that is represented by a) 90 668.33 P
7 F
-0.52 (reference) 371.6 668.33 P
4 F
-0.52 ( and a current) 412.1 668.33 P
7 F
-0.52 (behavior) 478.51 668.33 P
4 F
-0.52 ( that) 518.3 668.33 P
0.35 (is composed of a set of acquaintances \050the instance variables or local state\051 that include the methods) 72 648.33 P
-0.63 (that define the actions that the actor can take upon receipt of a message.  The acquaintances of an actor) 72 628.33 P
-0.03 (are other actors that messages may be sent to or may in turn be sent in messages.  When a non-prim-) 72 608.33 P
-0.58 (itive actor is sent in a message, it is actually the reference that is sent.  Figure 1 illustrates an idealized) 72 588.33 P
0.25 (view of a non-primitive actor.  The basic form of interaction between actors is asynchronous-buffered) 72 568.33 P
0.44 (communication.  Thus, associated with every actor is a mail-queue that serves to buffer communica-) 72 548.33 P
0.06 (tions that are sent to the actor until they can be accepted for processing.  In addition, one or more be-) 72 528.33 P
-0.22 (haviors may be associated with the actor, thus a form of pipelining is intrinsic to the actor model.  The) 72 508.33 P
-0.27 (pipelining arises from the characteristic of the semantics that it is possible for the replacement behav-) 72 488.33 P
(ior to be established while other actions are being taken with respect to a received message.) 72 468.33 T
0.13 (When an actor receives a message, it is locked until it explicitly establishes its state and behavior for) 72 229.33 P
-0.19 (the next message to be received \050i.e., its replacement behavior\051.  Further, in response to a message, an) 72 209.33 P
(actor may send messages to other actors it knows about and also create new actors.) 72 189.33 T
-0.26 (In Rosette, the structure of an actor is concretized as follows.  Every actor is considered to be a col-) 90 164.33 P
0.55 (lection of slots that may be viewed as key-value pairs.  Any actor whatsoever may be used as a key.) 72 144.33 P
-0.34 (Further, every actor has a hidden or meta slot that refers to its) 72 124.33 P
5 F
-0.73 (parent) 361.57 124.33 P
4 F
-0.34 (.  If an attempt is made to look-) 397.55 124.33 P
0.34 (up a key in an actor and no slot of the actor has that key, then the lookup continues with the parent) 72 104.33 P
0.46 (actor.  The concept of an actor\325s script is made concrete by introducing method and procedure actors) 72 84.33 P
72 72 540 720 C
72 251 540 450 C
72 251 540 450 R
7 X
0 K
V
257 383 483 419 R
V
0.5 H
0 Z
0 X
N
1 10 Q
(mail-queue) 264 366 T
293 419 293 383 2 L
2 Z
N
329 419 329 383 2 L
N
401 419 401 383 2 L
N
454 419 454 383 2 L
N
(1) 275 428 T
(2) 311 428 T
(k) 427 428 T
(k+1) 461 427 T
1 18 Q
(.  .  .  .  .) 338 401 T
7 X
90 450 22.5 22.5 450.5 288.5 G
0 Z
0 X
90 450 22.5 22.5 450.5 288.5 A
406.39 381.25 409.99 383 409.71 379.01 3 L
N
374 329 409.86 382.79 2 L
2 Z
N
7 X
90 450 22.5 22.5 360.5 315.5 G
0 Z
0 X
90 450 22.5 22.5 360.5 315.5 A
465.29 379.04 467.98 382 469.2 378.19 3 L
N
453 312 467.95 381.76 2 L
2 Z
N
257 246 356 264 R
7 X
V
3 10 Q
0 X
(Figure 1) 288.6 257.33 T
7 X
0 90 45 18 383 302 G
3 H
4 X
0 90 45 18 383 302 A
2 F
0 X
(becomes) 392 329 T
130 390 175 426 R
7 X
V
1 H
0 Z
0 X
N
12 F
(X) 148 410 T
175 417 M
 189 417 189 417 193.5 414 D
 198 411 198 411 202 406 D
 206 401 206 401 212.5 397.5 D
 219 394 219 394 223 393 D
 227 392 227 392 234.5 391.5 D
 242 391 242 391 255 389 D
2 Z
8 X
N
252.54 392 256 390 252.54 388 3 L
0 Z
9 X
N
247 390 255.5 390 2 L
2 Z
N
0 X
([:w 9 c]) 411 398 T
([...]) 271 396 T
([...]) 305 396 T
(check) 347 323 T
(check) 437 296 T
339 315 382 315 2 L
0.5 H
10 X
N
429 289 472 289 2 L
N
0 X
(bal=) 345 305 T
(307) 356 296 T
(bal=) 434 278 T
(298) 444 269 T
1 F
(reference) 127 369 T
427.29 310.51 429.69 303.93 422.79 305.14 3 L
3 H
0 Z
4 X
N
426 307 428.55 304.89 2 L
2 Z
N
72 72 540 720 C
0 0 612 792 C
FMENDPAGE
%%EndPage: "2" 1
%%Page: "1" 1
612 792 0 FMBEGINPAGE
72 746 540 756 R
7 X
0 K
V
0 10 Q
0 X
(1) 303.22 749.33 T
72 32.67 540 42.67 R
7 X
V
72 54 540 720 R
V
8 12 Q
0 X
(1.) 72 712 T
(Introduction) 90 712 T
4 10 Q
0.22 (This report describes the Rosette language relative to release 1.0 of the Rosette system.  The Rosette) 72 686.33 P
0.72 (language is a concurrent object-oriented programming language.  It is prototype-based and incorpo-) 72 666.33 P
1.64 (rates multiple inheritance and reflection.  The Rosette system provides an environment in which) 72 646.33 P
0.17 (concurrent object-oriented programs may be written and run on an ideal multi-computer system con-) 72 626.33 P
-0.11 (sisting of unlimited numbers of processors and unit communication delays.  The model of concurrency) 72 606.33 P
(implemented in Rosette is that of the Actor model [Agha 1986].) 72 586.33 T
-0.17 ( This document is organized as follows.  Section) 90 561.33 P
8 F
-0.18 (2) 310.94 561.33 P
4 F
-0.17 ( provides a brief overview of basic concepts.  Sec-) 316.67 561.33 P
-0.62 (tion) 72 541.33 P
8 F
-0.64 (3) 92.3 541.33 P
4 F
-0.62 ( presents the lexical conventions used in writing Rosette programs.  Section) 98.04 541.33 P
8 F
-0.64 (4) 442.83 541.33 P
4 F
-0.62 ( presents the simple) 448.57 541.33 P
0.54 (expressions and commands.  Section) 72 521.33 P
8 F
0.55 (5) 245.53 521.33 P
4 F
0.54 ( defines the compound constructs.  Section) 251.27 521.33 P
8 F
0.55 (6) 453.62 521.33 P
4 F
0.54 ( discusses how to) 459.35 521.33 P
-0.35 (define new actors.  Section) 72 501.33 P
8 F
-0.37 (7) 195.91 501.33 P
4 F
-0.35 ( presents the operations available on primitive actors.  Section) 201.64 501.33 P
8 F
-0.37 (8) 489.27 501.33 P
4 F
-0.35 ( describes) 495.01 501.33 P
0.47 (operations on program representation actors, section) 72 481.33 P
8 F
0.49 (9) 321.36 481.33 P
4 F
0.47 ( presents the reflective model and monitoring) 327.1 481.33 P
0.08 (facilities, section) 72 461.33 P
8 F
0.08 (10) 152.12 461.33 P
4 F
0.08 ( discusses the mechanisms for syntactic extensions, and section) 163.6 461.33 P
8 F
0.08 (11) 460.07 461.33 P
4 F
0.08 ( presents basic) 471.54 461.33 P
(input/output facilities.) 72 441.33 T
8 12 Q
(2.) 72 410 T
(Basic Concepts) 90 410 T
(2.1.) 72 383 T
(What is an Actor?) 108 383 T
4 10 Q
0.23 (In this model, everything in a system is taken to be an actor.  In this respect the model is uniform in) 72 357.33 P
0.15 (the same way that Smalltalk takes everything to be an object.  Two important differences are that in) 72 337.33 P
-0.41 (the Actor model, each actor is active in a manner that is completely independent of all other actors and) 72 317.33 P
-0.07 (further, all of the actions taken by an actor upon receipt of a message are concurrent. That is, there is) 72 297.33 P
0.09 (no implicit serial ordering of the actions in a method \050or script as it is referred to in the Actor model\051.) 72 277.33 P
(This approach readily lends itself to descriptions of maximal concurrency.) 72 257.33 T
-0.5 (All actors are characterized by an identity and a current behavior.  Once created an actor\325s identity) 90 232.33 P
-0.16 (does not change even though the way that it behaves over time may.  The current behavior of an actor) 72 212.33 P
(represents how the actor will respond to the next message that it receives.) 72 192.33 T
0.41 (Actors may be partitioned into primitive and non-primitive classes.  Primitive actors are used in) 90 167.33 P
0.49 (the model to avoid a conceptually infinite regress of message passing.  They correspond to the usual) 72 147.33 P
-0.69 (atomic types such as numbers and characters.  An implementation will give direct treatment to passing) 72 127.33 P
-0.63 (messages to a primitive actor.  For example, an implementation will directly interpret passing the mes-) 72 107.33 P
0.63 (sage) 72 87.33 P
5 F
1.35 ([+ 4]) 95.96 87.33 P
4 F
0.63 ( to the actor) 127.29 87.33 P
5 F
1.35 (3) 188.11 87.33 P
4 F
0.63 ( by identifying the operation and performing it.  Primitive actors are sent) 194.11 87.33 P
FMENDPAGE
%%EndPage: "1" 0
%%Trailer
%%BoundingBox: 0 0 612 792
%%Pages: 53 -1
%%DocumentFonts: Helvetica-Bold
%%+ Times-Roman
%%+ Times-Italic
%%+ Times-Bold
%%+ NewCenturySchlbk-Roman
%%+ Courier-Bold
%%+ Symbol
%%+ NewCenturySchlbk-Italic
%%+ NewCenturySchlbk-Bold
%%+ Helvetica-BoldOblique
%%+ Courier-BoldOblique
%%+ Courier
%%+ Helvetica
